From b2d43df57e13a715c155f15230dac40759904191 Mon Sep 17 00:00:00 2001 From: Semjon Kerner Date: Thu, 15 Apr 2021 17:03:08 +0200 Subject: [PATCH 1/6] playsound whenever user interaction is required --- fishy/engine/semifisher/fishing_event.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/fishy/engine/semifisher/fishing_event.py b/fishy/engine/semifisher/fishing_event.py index 5c6527e..1a09ba5 100644 --- a/fishy/engine/semifisher/fishing_event.py +++ b/fishy/engine/semifisher/fishing_event.py @@ -137,6 +137,9 @@ def on_nobait(): logging.info(msg) web.send_notification(msg) + if FishEvent.sound: + playsound(helper.manifest_file("sound.mp3"), False) + def on_fishing(): FishEvent.stickInitTime = time.time() @@ -177,14 +180,23 @@ def on_invfull(): logging.info(msg) web.send_notification(msg) + if FishEvent.sound: + playsound(helper.manifest_file("sound.mp3"), False) + def on_fight(): msg = "FIGHTING!" logging.info(msg) web.send_notification(msg) + if FishEvent.sound: + playsound(helper.manifest_file("sound.mp3"), False) + def on_dead(): msg = "Character is dead!" logging.info(msg) web.send_notification(msg) + + if FishEvent.sound: + playsound(helper.manifest_file("sound.mp3"), False) From 708f64fd7b1df650c2f0f800e64c65a26568503d Mon Sep 17 00:00:00 2001 From: Semjon Kerner Date: Thu, 15 Apr 2021 20:24:01 +0200 Subject: [PATCH 2/6] act on lookaway as on idle --- fishy/engine/semifisher/fishing_event.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/fishy/engine/semifisher/fishing_event.py b/fishy/engine/semifisher/fishing_event.py index 1a09ba5..d1b21ca 100644 --- a/fishy/engine/semifisher/fishing_event.py +++ b/fishy/engine/semifisher/fishing_event.py @@ -87,7 +87,7 @@ 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, @@ -119,10 +119,6 @@ def on_depleted(): _sound_and_send_fishy_data() -def on_lookaway(): - return - - @if_eso_is_focused def on_looking(): """ From 363a0dd1bd34c15e7238bf3e2bba6762aa666d24 Mon Sep 17 00:00:00 2001 From: Semjon Kerner Date: Thu, 15 Apr 2021 20:26:35 +0200 Subject: [PATCH 3/6] reorder imports --- fishy/engine/semifisher/engine.py | 9 ++++----- fishy/engine/semifisher/fishing_event.py | 15 ++++++--------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/fishy/engine/semifisher/engine.py b/fishy/engine/semifisher/engine.py index 17270ca..b5453f4 100644 --- a/fishy/engine/semifisher/engine.py +++ b/fishy/engine/semifisher/engine.py @@ -1,18 +1,17 @@ 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 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 diff --git a/fishy/engine/semifisher/fishing_event.py b/fishy/engine/semifisher/fishing_event.py index d1b21ca..3a407a9 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 From 0396ea3239bf88ec1ae53de18db822f9c9aa21ae Mon Sep 17 00:00:00 2001 From: Semjon Kerner Date: Thu, 15 Apr 2021 20:27:08 +0200 Subject: [PATCH 4/6] playsond beep twice, moved from hotkey to engine --- fishy/engine/semifisher/engine.py | 5 +++++ fishy/helper/__init__.py | 2 +- fishy/helper/helper.py | 14 ++++++++++++++ fishy/helper/hotkey.py | 4 ---- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/fishy/engine/semifisher/engine.py b/fishy/engine/semifisher/engine.py index b5453f4..4f62e61 100644 --- a/fishy/engine/semifisher/engine.py +++ b/fishy/engine/semifisher/engine.py @@ -5,6 +5,7 @@ import logging from threading import Thread from typing import Callable from typing import Optional +from playsound import playsound from fishy.engine.common.window import WindowClient from fishy.engine.semifisher.fishing_mode import Colors, FishingMode @@ -14,6 +15,7 @@ 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 @@ -84,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/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 From 699354cd0b5e7a168b479c8ea1cf9c3ada2bf32f Mon Sep 17 00:00:00 2001 From: Semjon Kerner Date: Fri, 7 May 2021 09:59:18 +0200 Subject: [PATCH 5/6] rename send_hole_deplete to send_fish_caught --- fishy/engine/semifisher/fishing_event.py | 2 +- fishy/web/__init__.py | 2 +- fishy/web/web.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fishy/engine/semifisher/fishing_event.py b/fishy/engine/semifisher/fishing_event.py index 3a407a9..1759a5d 100644 --- a/fishy/engine/semifisher/fishing_event.py +++ b/fishy/engine/semifisher/fishing_event.py @@ -52,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: 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, From ff39f7d9bf28eeeda7ebc729760d0e3233d6a9fa Mon Sep 17 00:00:00 2001 From: Semjon Kerner Date: Fri, 7 May 2021 10:22:09 +0200 Subject: [PATCH 6/6] accumulate event functions --- fishy/engine/semifisher/fishing_event.py | 38 ++++-------------------- 1 file changed, 5 insertions(+), 33 deletions(-) diff --git a/fishy/engine/semifisher/fishing_event.py b/fishy/engine/semifisher/fishing_event.py index 1759a5d..8b97892 100644 --- a/fishy/engine/semifisher/fishing_event.py +++ b/fishy/engine/semifisher/fishing_event.py @@ -87,13 +87,13 @@ def fisher_callback(event: State): 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: @@ -125,8 +125,7 @@ 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) @@ -166,30 +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) - - if FishEvent.sound: - playsound(helper.manifest_file("sound.mp3"), False) - - -def on_fight(): - msg = "FIGHTING!" - logging.info(msg) - web.send_notification(msg) - - if FishEvent.sound: - playsound(helper.manifest_file("sound.mp3"), False) - - -def on_dead(): - msg = "Character is dead!" - logging.info(msg) - web.send_notification(msg) - - if FishEvent.sound: - playsound(helper.manifest_file("sound.mp3"), False)