import logging import pickle import time from pprint import pprint from tkinter.filedialog import asksaveasfile from fishy.engine.fullautofisher.engine import FullAuto, State from fishy.helper import hotkey from fishy.helper.hotkey import Key class Recorder: recording_fps = 1 mark_hole_key = Key.F8 def __init__(self, engine: FullAuto): self.recording = False self.engine = engine self.timeline = [] def _mark_hole(self): coods = self.engine.get_coods() self.timeline.append(("check_fish", coods)) logging.info("check_fish") def toggle_recording(self): if FullAuto.state != State.RECORDING and FullAuto.state != State.NONE: return self.recording = not self.recording if self.recording: self._start_recording() def _start_recording(self): FullAuto.state = State.RECORDING logging.info("f8 to stop recording") hotkey.set_hotkey(Recorder.mark_hole_key, self._mark_hole) self.timeline = [] while self.recording: start_time = time.time() coods = None while not coods: coods = self.engine.get_coods() self.timeline.append(("move_to", (coods[0], coods[1]))) time_took = time.time() - start_time if time_took <= Recorder.recording_fps: time.sleep(Recorder.recording_fps - time_took) else: logging.warning("Took too much time to record") hotkey.free_key(Recorder.mark_hole_key) files = [('Fishy File', '*.fishy')] file = None while not file: file = asksaveasfile(mode='wb', filetypes=files, defaultextension=files) data = {"full_auto_path": self.timeline} pprint(data) pickle.dump(data, file) file.close() FullAuto.state = State.NONE