wait for eso window active, stop engine when window becomes inactive

This commit is contained in:
Adam Saudagar 2021-05-02 23:35:06 +05:30
parent 6440ec1000
commit b0a8db7528
3 changed files with 22 additions and 2 deletions

View File

@ -22,7 +22,7 @@ from fishy.engine.common.IEngine import IEngine
from pynput import keyboard, mouse
from fishy.helper import hotkey, helper
from fishy.helper.helper import sign, log_raise
from fishy.helper.helper import sign, log_raise, wait_until, is_eso_active
from fishy.helper.config import config
mse = mouse.Controller()
@ -74,6 +74,12 @@ class FullAuto(IEngine):
elif FullAutoMode(config.get("full_auto_mode", 0)) == FullAutoMode.Recorder:
self.mode = Recorder(self)
if not is_eso_active():
logging.info("Waiting for eso window to be active...")
wait_until(is_eso_active)
logging.info("starting in 2 secs...")
time.sleep(2)
# noinspection PyBroadException
try:
if self.window.get_capture() is None:
@ -90,6 +96,7 @@ class FullAuto(IEngine):
fishing_event.unsubscribe()
if self.show_crop:
self.start_show()
self.stop_on_inactive()
self.mode.run()
@ -109,6 +116,12 @@ class FullAuto(IEngine):
self.window.show(self.show_crop, func=image_pre_process)
Thread(target=func).start()
def stop_on_inactive(self):
def func():
wait_until(lambda: not is_eso_active())
self.start = False
Thread(target=func).start()
def get_coods(self):
img = self.window.processed_image(func=image_pre_process)
return get_values_from_image(img)

View File

@ -19,6 +19,8 @@ from fishy.helper.config import config
import random
from fishy.helper.helper import is_eso_active
class FishEvent:
fishCaught = 0
@ -46,7 +48,7 @@ def _fishing_sleep(waittime, lower_limit_ms = 16, upper_limit_ms = 2500):
def if_eso_is_focused(func):
def wrapper():
if GetWindowText(GetForegroundWindow()) != "Elder Scrolls Online":
if not is_eso_active():
logging.warning("ESO window is not focused")
return
func()

View File

@ -17,6 +17,7 @@ from hashlib import md5
from win32com.client import Dispatch
from win32comext.shell import shell, shellcon
from win32gui import GetForegroundWindow, GetWindowText
import fishy
import winshell
@ -215,6 +216,10 @@ def update():
restart()
def is_eso_active():
return GetWindowText(GetForegroundWindow()) == "Elder Scrolls Online"
# noinspection PyProtectedMember,PyUnresolvedReferences
def _get_id(thread):
# returns id of the respective thread