mirror of
https://github.com/fishyboteso/fishyboteso.git
synced 2024-08-30 18:32:13 +00:00
created interface for engines
This commit is contained in:
parent
cd1b2dd8f6
commit
686252d39e
@ -8,6 +8,7 @@ import win32gui
|
||||
|
||||
import fishy
|
||||
from fishy import web, helper, gui
|
||||
from fishy.engine.event_handler import EngineEventHandler
|
||||
from fishy.gui import GUI
|
||||
from fishy.helper import Config
|
||||
from fishy.engine import SemiFisherEngine
|
||||
@ -53,7 +54,7 @@ def main():
|
||||
if not gui.check_eula(c):
|
||||
return
|
||||
|
||||
bot = SemiFisherEngine(c, lambda: gui_window)
|
||||
bot = EngineEventHandler(c, lambda: gui_window)
|
||||
gui_window = GUI(c, lambda: bot)
|
||||
|
||||
gui_window.start()
|
||||
|
31
fishy/engine/IEngine.py
Normal file
31
fishy/engine/IEngine.py
Normal file
@ -0,0 +1,31 @@
|
||||
import typing
|
||||
from abc import ABC, abstractmethod
|
||||
from threading import Thread
|
||||
from typing import Callable
|
||||
|
||||
if typing.TYPE_CHECKING:
|
||||
from fishy.gui import GUI
|
||||
|
||||
|
||||
class IEngine(ABC):
|
||||
|
||||
def __init__(self, config, gui_ref: 'Callable[[], GUI]'):
|
||||
self.get_gui = gui_ref
|
||||
self.start = False
|
||||
self.fishPixWindow = None
|
||||
self.thread = None
|
||||
self.config = config
|
||||
|
||||
@property
|
||||
def gui(self):
|
||||
return self.get_gui().funcs
|
||||
|
||||
def toggle_start(self):
|
||||
self.start = not self.start
|
||||
if self.start:
|
||||
self.thread = Thread(target=self.run)
|
||||
self.thread.start()
|
||||
|
||||
@abstractmethod
|
||||
def run(self):
|
||||
...
|
@ -1,2 +1 @@
|
||||
from fishy.engine.semifisher.funcs import SemiFisherFuncs
|
||||
from fishy.engine.semifisher.engine import SemiFisherEngine
|
||||
|
40
fishy/engine/event_handler.py
Normal file
40
fishy/engine/event_handler.py
Normal file
@ -0,0 +1,40 @@
|
||||
import logging
|
||||
from fishy.engine import SemiFisherEngine
|
||||
from fishy.engine.fullautofisher.engine import FullAuto
|
||||
|
||||
|
||||
class EngineEventHandler:
|
||||
def __init__(self, config, gui_ref):
|
||||
self.event_handler_running = True
|
||||
self.event = []
|
||||
|
||||
self.semi_fisher_engine = SemiFisherEngine(config, gui_ref)
|
||||
self.full_fisher_engine = FullAuto(config, gui_ref)
|
||||
|
||||
def start_event_handler(self):
|
||||
while self.event_handler_running:
|
||||
while len(self.event) > 0:
|
||||
event = self.event.pop(0)
|
||||
event()
|
||||
|
||||
def toggle_semifisher(self):
|
||||
self.event.append(self.semi_fisher_engine.toggle_start)
|
||||
|
||||
def toggle_fullfisher(self):
|
||||
self.event.append(self.full_fisher_engine.toggle_start)
|
||||
|
||||
def check_pixel_val(self):
|
||||
def func():
|
||||
if self.semi_fisher_engine.start:
|
||||
self.semi_fisher_engine.show_pixel_vals()
|
||||
else:
|
||||
logging.debug("Start the engine first before running this command")
|
||||
|
||||
self.event.append(func)
|
||||
|
||||
def quit(self):
|
||||
def func():
|
||||
self.semi_fisher_engine.start = False
|
||||
self.event_handler_running = False
|
||||
|
||||
self.event.append(func)
|
13
fishy/engine/fullautofisher/engine.py
Normal file
13
fishy/engine/fullautofisher/engine.py
Normal file
@ -0,0 +1,13 @@
|
||||
import logging
|
||||
import time
|
||||
|
||||
from fishy.engine.IEngine import IEngine
|
||||
|
||||
|
||||
class FullAuto(IEngine):
|
||||
def run(self):
|
||||
self.gui.bot_started(True)
|
||||
while self.start:
|
||||
logging.debug("running full auto")
|
||||
time.sleep(0.5)
|
||||
self.gui.bot_started(False)
|
@ -8,12 +8,12 @@ import logging
|
||||
|
||||
import pywintypes
|
||||
|
||||
from fishy.engine.semifisher.funcs import SemiFisherFuncs
|
||||
from fishy.engine.IEngine import IEngine
|
||||
from fishy.engine.semifisher import fishing_event
|
||||
from .fishing_event import HookEvent, StickEvent, LookEvent, IdleEvent
|
||||
from .fishing_mode import FishingMode
|
||||
from .pixel_loc import PixelLoc
|
||||
from .window import Window
|
||||
from fishy.engine.window import Window
|
||||
|
||||
if typing.TYPE_CHECKING:
|
||||
from fishy.gui import GUI
|
||||
@ -23,31 +23,14 @@ def _wait_and_check(gui):
|
||||
time.sleep(10)
|
||||
if not fishing_event._FishingStarted:
|
||||
gui.show_error("Doesn't look like fishing has started\n\n"
|
||||
"Make sure ProvisionsChalutier addon is visible clearly on top "
|
||||
"left corner of the screen, either,\n"
|
||||
"1) Outdated addons are disabled\n"
|
||||
"2) Other addons are overlapping ProvisionsChalutier\n"
|
||||
"3) Post processing (re shader) is on\n\n"
|
||||
"If fixing those doesnt work, try running the bot as admin")
|
||||
"Check out #faqs on our discord channel to troubleshoot the issue")
|
||||
|
||||
|
||||
class SemiFisherEngine:
|
||||
class SemiFisherEngine(IEngine):
|
||||
def __init__(self, config, gui_ref: 'Callable[[], GUI]'):
|
||||
self.funcs = SemiFisherFuncs(self)
|
||||
self.get_gui = gui_ref
|
||||
super().__init__(config, gui_ref)
|
||||
|
||||
self.start = False
|
||||
self.fishPixWindow = None
|
||||
self.fishy_thread = None
|
||||
self.config = config
|
||||
self.event_handler_running = True
|
||||
self.gui_events = []
|
||||
|
||||
@property
|
||||
def gui(self):
|
||||
return self.get_gui().funcs
|
||||
|
||||
def start_fishing(self):
|
||||
def run(self):
|
||||
"""
|
||||
Starts the fishing
|
||||
code explained in comments in detail
|
||||
@ -90,13 +73,7 @@ class SemiFisherEngine:
|
||||
logging.info("Fishing engine stopped")
|
||||
self.gui.bot_started(False)
|
||||
|
||||
def start_event_handler(self):
|
||||
while self.event_handler_running:
|
||||
while len(self.gui_events) > 0:
|
||||
event = self.gui_events.pop(0)
|
||||
event()
|
||||
|
||||
def _show_pixel_vals(self):
|
||||
def show_pixel_vals(self):
|
||||
def show():
|
||||
freq = 0.5
|
||||
t = 0
|
||||
|
@ -1,33 +0,0 @@
|
||||
import logging
|
||||
from threading import Thread
|
||||
|
||||
|
||||
# noinspection PyProtectedMember
|
||||
class SemiFisherFuncs:
|
||||
def __init__(self, engine):
|
||||
self.engine = engine
|
||||
|
||||
def start_button_pressed(self):
|
||||
def func():
|
||||
self.engine.start = not self.engine.start
|
||||
if self.engine.start:
|
||||
self.engine.fishy_thread = Thread(target=self.engine.start_fishing)
|
||||
self.engine.fishy_thread.start()
|
||||
|
||||
self.engine.gui_events.append(func)
|
||||
|
||||
def check_pixel_val(self):
|
||||
def func():
|
||||
if self.engine.start:
|
||||
self.engine._show_pixel_vals()
|
||||
else:
|
||||
logging.debug("Start the engine first before running this command")
|
||||
|
||||
self.engine.gui_events.append(func)
|
||||
|
||||
def quit(self):
|
||||
def func():
|
||||
self.engine.start = False
|
||||
self.engine.event_handler_running = False
|
||||
|
||||
self.engine.gui_events.append(func)
|
@ -2,6 +2,7 @@ import logging
|
||||
from typing import List, Callable
|
||||
import threading
|
||||
|
||||
from fishy.engine.event_handler import EngineEventHandler
|
||||
from fishy.gui.funcs import GUIFuncs
|
||||
from fishy.engine import SemiFisherEngine
|
||||
from . import main_gui
|
||||
@ -10,7 +11,7 @@ from fishy.helper import Config
|
||||
|
||||
|
||||
class GUI:
|
||||
def __init__(self, config: Config, get_engine: Callable[[], SemiFisherEngine]):
|
||||
def __init__(self, config: Config, get_engine: Callable[[], EngineEventHandler]):
|
||||
"""
|
||||
:param config: used to get and set configuration settings
|
||||
"""
|
||||
@ -41,7 +42,7 @@ class GUI:
|
||||
|
||||
@property
|
||||
def engine(self):
|
||||
return self.get_engine().funcs
|
||||
return self.get_engine()
|
||||
|
||||
def create(self):
|
||||
main_gui._create(self)
|
||||
|
@ -24,11 +24,15 @@ def _apply_theme(gui: 'GUI'):
|
||||
|
||||
def _create(gui: 'GUI'):
|
||||
engines = {
|
||||
"Semi Fisher": [lambda: config_top.start_semifisher_config(gui), gui.engine.start_button_pressed],
|
||||
# "Full-Auto Fisher": [not_implemented, not_implemented],
|
||||
"Semi Fisher": [lambda: config_top.start_semifisher_config(gui), gui.engine.toggle_semifisher],
|
||||
"Full-Auto Fisher": [not_implemented, gui.engine.toggle_fullfisher],
|
||||
# "Lock Picker": [not_implemented, not_implemented]
|
||||
}
|
||||
|
||||
def start_engine(label):
|
||||
gui._config.set("last_started", label)
|
||||
engines[label][1]()
|
||||
|
||||
gui._root = ThemedTk(theme="equilux", background=True)
|
||||
gui._root.title("Fishybot for Elder Scrolls Online")
|
||||
|
||||
@ -88,14 +92,15 @@ def _create(gui: 'GUI'):
|
||||
|
||||
engine_var = StringVar(start_frame)
|
||||
labels = list(engines.keys())
|
||||
engine_select = OptionMenu(start_frame, engine_var, labels[0], *labels)
|
||||
last_started = gui._config.get("last_started", labels[0])
|
||||
engine_select = OptionMenu(start_frame, engine_var, last_started, *labels)
|
||||
engine_select.pack(side=LEFT)
|
||||
|
||||
button = Button(start_frame, text="⚙", width=0, command=lambda: engines[engine_var.get()][0]())
|
||||
button.pack(side=RIGHT)
|
||||
config_button = Button(start_frame, text="⚙", width=0, command=lambda: engines[engine_var.get()][0]())
|
||||
config_button.pack(side=RIGHT)
|
||||
|
||||
gui._start_button = Button(start_frame, text="STOP" if gui._bot_running else "START", width=25,
|
||||
command=lambda: engines[engine_var.get()][1]())
|
||||
command=lambda: start_engine(engine_var.get()))
|
||||
gui._start_button.pack(side=RIGHT)
|
||||
|
||||
start_frame.pack(padx=(10, 10), pady=(5, 15), fill=X)
|
||||
|
Loading…
Reference in New Issue
Block a user