diff --git a/fishy/engine/semifisher/engine.py b/fishy/engine/semifisher/engine.py index 17270ca..4f62e61 100644 --- a/fishy/engine/semifisher/engine.py +++ b/fishy/engine/semifisher/engine.py @@ -1,20 +1,21 @@ import time import typing +import cv2 +import logging from threading import Thread from typing import Callable from typing import Optional - -import cv2 -import logging - -from fishy.engine.semifisher.fishing_event import FishEvent +from playsound import playsound from fishy.engine.common.window import WindowClient from fishy.engine.semifisher.fishing_mode import Colors, FishingMode from fishy.engine.common.IEngine import IEngine +from fishy.engine.semifisher.fishing_mode import FishingMode +from fishy.engine.semifisher.fishing_event import FishEvent from fishy.engine.semifisher import fishing_mode, fishing_event from fishy.engine.semifisher.pixel_loc import PixelLoc +from fishy.helper import helper from fishy.helper.luaparser import sv_color_extract @@ -85,6 +86,9 @@ class SemiFisherEngine(IEngine): if self.start: self.thread = Thread(target=self.run) self.thread.start() + playsound(helper.manifest_file("beep.wav"), False) + else: + helper.playsound_multiple(helper.manifest_file("beep.wav")) if __name__ == '__main__': diff --git a/fishy/engine/semifisher/fishing_event.py b/fishy/engine/semifisher/fishing_event.py index 5c6527e..8b97892 100644 --- a/fishy/engine/semifisher/fishing_event.py +++ b/fishy/engine/semifisher/fishing_event.py @@ -5,20 +5,17 @@ also implements callbacks which is called when states are changed """ import logging import time - -from fishy.engine.semifisher import fishing_mode -from playsound import playsound - -from fishy import web -from fishy.engine.semifisher.fishing_mode import State, FishingMode -from fishy.helper import helper +import random import keyboard +from playsound import playsound from win32gui import GetWindowText, GetForegroundWindow +from fishy import web +from fishy.engine.semifisher import fishing_mode +from fishy.engine.semifisher.fishing_mode import State, FishingMode +from fishy.helper import helper from fishy.helper.config import config -import random - class FishEvent: fishCaught = 0 @@ -55,7 +52,7 @@ def if_eso_is_focused(func): def _sound_and_send_fishy_data(): if FishEvent.fishCaught > 0: - web.send_hole_deplete(FishEvent.fishCaught, time.time() - FishEvent.hole_start_time, FishEvent.fish_times) + web.send_fish_caught(FishEvent.fishCaught, time.time() - FishEvent.hole_start_time, FishEvent.fish_times) FishEvent.fishCaught = 0 if FishEvent.sound: @@ -87,16 +84,16 @@ def subscribe(): def fisher_callback(event: State): callbacks_map = { State.IDLE: on_idle, - State.LOOKAWAY: on_lookaway, + State.LOOKAWAY: on_idle, State.LOOKING: on_looking, State.DEPLETED: on_depleted, - State.NOBAIT: on_nobait, + State.NOBAIT: lambda: on_user_interact("You need to equip bait!"), State.FISHING: on_fishing, State.REELIN: on_reelin, State.LOOT: on_loot, - State.INVFULL: on_invfull, - State.FIGHT: on_fight, - State.DEAD: on_dead + State.INVFULL: lambda: on_user_interact("Inventory is full!"), + State.FIGHT: lambda: on_user_interact("Character is FIGHTING!"), + State.DEAD: lambda: on_user_interact("Character died!") } try: @@ -119,10 +116,6 @@ def on_depleted(): _sound_and_send_fishy_data() -def on_lookaway(): - return - - @if_eso_is_focused def on_looking(): """ @@ -132,11 +125,13 @@ def on_looking(): keyboard.press_and_release(FishEvent.action_key) -def on_nobait(): - msg = "No bait equipped!" +def on_user_interact(msg): logging.info(msg) web.send_notification(msg) + if FishEvent.sound: + playsound(helper.manifest_file("sound.mp3"), False) + def on_fishing(): FishEvent.stickInitTime = time.time() @@ -170,21 +165,3 @@ def on_loot(): _fishing_sleep(0) keyboard.press_and_release(FishEvent.collect_key) _fishing_sleep(0) - - -def on_invfull(): - msg = "Inventory full!" - logging.info(msg) - web.send_notification(msg) - - -def on_fight(): - msg = "FIGHTING!" - logging.info(msg) - web.send_notification(msg) - - -def on_dead(): - msg = "Character is dead!" - logging.info(msg) - web.send_notification(msg) diff --git a/fishy/helper/__init__.py b/fishy/helper/__init__.py index 2d3f6cf..07bc150 100644 --- a/fishy/helper/__init__.py +++ b/fishy/helper/__init__.py @@ -2,5 +2,5 @@ from .auto_update import auto_upgrade, upgrade_avail, versions from .config import Config from .helper import open_web, initialize_uid, install_thread_excepthook, unhandled_exception_logging, manifest_file, \ create_shortcut_first, addon_exists, get_addonversion, install_addon, remove_addon, restart, create_shortcut, \ - not_implemented, update, get_savedvarsdir + not_implemented, update, get_savedvarsdir, playsound_multiple from .luaparser import sv_color_extract diff --git a/fishy/helper/helper.py b/fishy/helper/helper.py index 66b6036..39fdfd2 100644 --- a/fishy/helper/helper.py +++ b/fishy/helper/helper.py @@ -7,6 +7,7 @@ import time import traceback import webbrowser import requests +from playsound import playsound from io import BytesIO from threading import Thread from zipfile import ZipFile @@ -23,6 +24,19 @@ import winshell from fishy import web +def playsound_multiple(path, count=2): + if count < 1: + logging.debug("Please don't make me beep 0 times or less.") + return + + def _ps_m(): + for i in range(count-1): + playsound(path, True) + playsound(path, False) + + Thread(target=_ps_m).start() + + def not_implemented(): logging.error("Not Implemented") diff --git a/fishy/helper/hotkey.py b/fishy/helper/hotkey.py index 74c57c3..5c6a7f3 100644 --- a/fishy/helper/hotkey.py +++ b/fishy/helper/hotkey.py @@ -3,9 +3,6 @@ from threading import Thread from typing import Dict, Callable, Optional import keyboard -from playsound import playsound - -from fishy.helper import helper class Key(Enum): @@ -27,7 +24,6 @@ def _get_callback(k): if not _hotkeys[k]: return - playsound(helper.manifest_file("beep.wav"), False) Thread(target=_hotkeys[k]).start() return callback diff --git a/fishy/web/__init__.py b/fishy/web/__init__.py index 6912bae..ec57c9c 100644 --- a/fishy/web/__init__.py +++ b/fishy/web/__init__.py @@ -1,2 +1,2 @@ from .urls import get_notification_page, get_terms_page -from .web import register_user, send_notification, send_hole_deplete, is_subbed, unsub, get_session, sub +from .web import register_user, send_notification, send_fish_caught, is_subbed, unsub, get_session, sub diff --git a/fishy/web/web.py b/fishy/web/web.py index e714842..f79319b 100644 --- a/fishy/web/web.py +++ b/fishy/web/web.py @@ -62,7 +62,7 @@ def send_notification(message): @uses_session @fallback(None) -def send_hole_deplete(fish_caught, hole_time, fish_times): +def send_fish_caught(fish_caught, hole_time, fish_times): hole_data = { "fish_caught": fish_caught, "hole_time": hole_time,