mirror of
https://github.com/TheFunny/ArisuAutoSweeper
synced 2025-12-16 22:05:12 +00:00
perf(sweep): improve sweep flexibility
This commit is contained in:
parent
0a697e9398
commit
d47e463365
@ -19,11 +19,10 @@ class StageSweep:
|
|||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
name: str,
|
name: str,
|
||||||
sweep_num: int,
|
|
||||||
max_sweep: int,
|
max_sweep: int,
|
||||||
):
|
):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.sweep_num = sweep_num
|
self.sweep_num = None
|
||||||
|
|
||||||
self.check: ButtonWrapper = None
|
self.check: ButtonWrapper = None
|
||||||
self.num: Digit = None
|
self.num: Digit = None
|
||||||
@ -45,7 +44,6 @@ class StageSweep:
|
|||||||
self.current_sweep = 0
|
self.current_sweep = 0
|
||||||
|
|
||||||
self.sweep_method = None
|
self.sweep_method = None
|
||||||
self.set_mode()
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f'StageSweep({self.name})'
|
return f'StageSweep({self.name})'
|
||||||
@ -88,9 +86,10 @@ class StageSweep:
|
|||||||
self.skip_ok_upper = button_skip_ok_upper if button_skip_ok_upper else SKIP_OK_UPPER
|
self.skip_ok_upper = button_skip_ok_upper if button_skip_ok_upper else SKIP_OK_UPPER
|
||||||
self.skip_ok_lower = button_skip_ok_lower if button_skip_ok_lower else SKIP_OK_LOWER
|
self.skip_ok_lower = button_skip_ok_lower if button_skip_ok_lower else SKIP_OK_LOWER
|
||||||
|
|
||||||
def set_mode(self, mode: str = None):
|
def set_mode(self, mode: str = None, num: int = None) -> bool:
|
||||||
if mode is None:
|
if num is not None:
|
||||||
match self.sweep_num:
|
self.sweep_num = num
|
||||||
|
match num:
|
||||||
case 0:
|
case 0:
|
||||||
self.sweep_method = self.set_sweep_min
|
self.sweep_method = self.set_sweep_min
|
||||||
case -1:
|
case -1:
|
||||||
@ -98,15 +97,19 @@ class StageSweep:
|
|||||||
case x if x > 0:
|
case x if x > 0:
|
||||||
self.sweep_method = self.set_sweep_num
|
self.sweep_method = self.set_sweep_num
|
||||||
case _:
|
case _:
|
||||||
logger.warning(f'Invalid sweep num: {self.sweep_num}')
|
logger.warning(f'Invalid sweep num: {num}')
|
||||||
return
|
return True
|
||||||
match mode:
|
if mode is not None:
|
||||||
case 'max':
|
match mode:
|
||||||
self.sweep_method = self.set_sweep_max
|
case 'max':
|
||||||
case 'min':
|
self.sweep_method = self.set_sweep_max
|
||||||
self.sweep_method = self.set_sweep_min
|
case 'min':
|
||||||
case _:
|
self.sweep_method = self.set_sweep_min
|
||||||
logger.warning(f'Invalid sweep mode: {mode}')
|
case _:
|
||||||
|
logger.warning(f'Invalid sweep mode: {mode}')
|
||||||
|
return True
|
||||||
|
logger.warning(f'Invalid sweep setting')
|
||||||
|
return False
|
||||||
|
|
||||||
def check_sweep(self, main: ModuleBase):
|
def check_sweep(self, main: ModuleBase):
|
||||||
return main.appear(self.check)
|
return main.appear(self.check)
|
||||||
@ -115,8 +118,11 @@ class StageSweep:
|
|||||||
return main.appear(self.skip_skip) or main.appear(self.skip_ok_upper) or main.appear(self.skip_ok_lower)
|
return main.appear(self.skip_skip) or main.appear(self.skip_ok_upper) or main.appear(self.skip_ok_lower)
|
||||||
|
|
||||||
def load_sweep_num(self, main: ModuleBase):
|
def load_sweep_num(self, main: ModuleBase):
|
||||||
|
timer = Timer(0.5, 2).start()
|
||||||
while 1:
|
while 1:
|
||||||
main.device.screenshot()
|
main.device.screenshot()
|
||||||
|
if not timer.reached_and_reset():
|
||||||
|
continue
|
||||||
ocr_result = self.num.detect_and_ocr(main.device.image)
|
ocr_result = self.num.detect_and_ocr(main.device.image)
|
||||||
if not ocr_result:
|
if not ocr_result:
|
||||||
logger.warning(f'No valid num in {self.num.name}')
|
logger.warning(f'No valid num in {self.num.name}')
|
||||||
@ -204,7 +210,9 @@ class StageSweep:
|
|||||||
if retry.reached_and_reset():
|
if retry.reached_and_reset():
|
||||||
main.click_with_interval(self.min, interval=0)
|
main.click_with_interval(self.min, interval=0)
|
||||||
|
|
||||||
def do_sweep(self, main: ModuleBase, skip_first_screenshot=True) -> bool:
|
def do_sweep(self, main: ModuleBase, mode: str = None, num: int = None, skip_first_screenshot=True) -> bool:
|
||||||
|
if not self.set_mode(mode, num):
|
||||||
|
return False
|
||||||
timer = Timer(0.5, 1)
|
timer = Timer(0.5, 1)
|
||||||
timer_stable = Timer(0.5, 1).start()
|
timer_stable = Timer(0.5, 1).start()
|
||||||
status = SweepStatus.SELECT
|
status = SweepStatus.SELECT
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user