mirror of
https://gitee.com/sui-feng-cb/AzurLaneAutoScript1
synced 2026-03-11 23:18:22 +08:00
Add: Warnings when get stuck
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from module.base.timer import Timer
|
||||
from module.device.app import AppControl
|
||||
from module.device.control import Control
|
||||
from module.device.screenshot import Screenshot
|
||||
@@ -9,6 +10,10 @@ from module.logger import logger
|
||||
|
||||
class Device(Screenshot, Control, AppControl):
|
||||
_screen_size_checked = False
|
||||
stuck_record = set()
|
||||
stuck_timer = Timer(60, count=60).start()
|
||||
stuck_timer_long = Timer(300, count=300).start()
|
||||
stuck_long_wait_list = ['BATTLE_STATUS_S', 'PAUSE']
|
||||
|
||||
def handle_night_commission(self, hour=21, threshold=30):
|
||||
"""
|
||||
@@ -38,6 +43,7 @@ class Device(Screenshot, Control, AppControl):
|
||||
Returns:
|
||||
PIL.Image.Image:
|
||||
"""
|
||||
self.stuck_record_check()
|
||||
super().screenshot()
|
||||
if self.handle_night_commission():
|
||||
super().screenshot()
|
||||
@@ -48,6 +54,10 @@ class Device(Screenshot, Control, AppControl):
|
||||
|
||||
return self.image
|
||||
|
||||
def click(self, button):
|
||||
self.stuck_record_clear()
|
||||
return super().click(button)
|
||||
|
||||
def check_screen_size(self):
|
||||
"""
|
||||
Screen size must be 1280x720, if not exit.
|
||||
@@ -65,4 +75,27 @@ class Device(Screenshot, Control, AppControl):
|
||||
logger.warning(f'Not supported screen size: {width}x{height}')
|
||||
logger.warning('Alas requires 1280x720')
|
||||
logger.hr('Script end')
|
||||
exit(1)
|
||||
exit(1)
|
||||
|
||||
def stuck_record_add(self, button):
|
||||
self.stuck_record.add(str(button))
|
||||
|
||||
def stuck_record_clear(self):
|
||||
self.stuck_record = set()
|
||||
self.stuck_timer.reset()
|
||||
self.stuck_timer_long.reset()
|
||||
|
||||
def stuck_record_check(self):
|
||||
reached = self.stuck_timer.reached()
|
||||
reached_long = self.stuck_timer_long.reached()
|
||||
|
||||
if not reached:
|
||||
return False
|
||||
if not reached_long:
|
||||
for button in self.stuck_long_wait_list:
|
||||
if button in self.stuck_record:
|
||||
return False
|
||||
|
||||
logger.warning('Wait too long')
|
||||
logger.warning(f'Waiting for {self.stuck_record}')
|
||||
self.stuck_record_clear()
|
||||
|
||||
Reference in New Issue
Block a user