fishyboteso/fishy/engine/fullautofisher/controls.py

76 lines
2.8 KiB
Python
Raw Normal View History

import logging
from fishy.helper import hotkey, helper
from fishy.engine.fullautofisher.engine import FullAuto
from fishy.helper.hotkey import Key
def get_controls(engine: FullAuto):
from fishy.engine.fullautofisher.recorder import Recorder
from fishy.engine.fullautofisher.player import Player
controls = [
("MODE_SELECT", {
Key.RIGHT: (lambda: engine.controls.select_mode("CALIBRATE"), "calibrate mode"),
Key.UP: (lambda: engine.controls.select_mode("PLAY"), "play mode"),
Key.LEFT: (lambda: engine.controls.select_mode("RECORD"), "record mode"),
Key.DOWN: (lambda: engine.controls.select_mode("TEST"), "test mode")
}),
("CALIBRATE", {
Key.RIGHT: (engine.calibrate.update_crop, "cropping"),
Key.UP: (engine.calibrate.walk_calibrate, "walking"),
Key.LEFT: (engine.calibrate.rotate_calibrate, "rotation"),
Key.DOWN: (engine.calibrate.time_to_reach_bottom_callibrate, "look up down")
}),
("PLAY/RECORD", {
Key.RIGHT: (Player(engine).toggle_move, "start/stop play"),
Key.UP: (Recorder(engine).toggle_recording, "start/stop record"),
Key.LEFT: (None, "not implemented"),
Key.DOWN: (None, "not implemented")
}),
("TEST1", {
Key.RIGHT: (engine.test.print_coods, "print coordinates"),
Key.UP: (engine.test.look_for_hole, "look for hole up down"),
Key.LEFT: (None, "not implemented"),
Key.DOWN: (lambda: engine.controls.select_mode("TEST2"), "show next")
}),
("TEST2", {
Key.RIGHT: (engine.test.set_target, "set target"),
Key.UP: (engine.test.move_to_target, "move to target"),
Key.LEFT: (engine.test.rotate_to_target, "rotate to target"),
Key.DOWN: (lambda: engine.controls.select_mode("TEST1"), "show previous")
})
]
return controls
class Controls:
def __init__(self, controls, first=0):
self.current_menu = first - 1
self.controls = controls
def initialize(self):
self.select_mode("MODE_SELECT")
def select_mode(self, mode):
self.current_menu = 0
for i, control in enumerate(self.controls):
if mode == control[0]:
self.current_menu = i
help_str = F"CONTROLS: {self.controls[self.current_menu][0]}"
for key, meta in self.controls[self.current_menu][1].items():
func, name = meta
hotkey.set_hotkey(key, func)
help_str += f"\n{key.value}: {name}"
logging.info(help_str)
def unassign_keys(self):
keys = []
for c in self.controls:
for k in c[1].keys():
if k not in keys:
hotkey.free_key(k)