All checks were successful
ci/woodpecker/push/check_format Pipeline was successful
51 lines
1.8 KiB
Python
51 lines
1.8 KiB
Python
from mower.solvers.infra.base_mixin import BaseMixin
|
|
from mower.solvers.infra.enter_room import EnterRoomSolver
|
|
from mower.utils.log import logger
|
|
from mower.utils.recognize import Scene
|
|
from mower.utils.solver import BaseSolver
|
|
|
|
from .utils import clue_cls
|
|
|
|
|
|
class DailySolver(BaseSolver, BaseMixin):
|
|
solver_name = "每日线索领取"
|
|
|
|
def run(self) -> None:
|
|
self.success = False
|
|
super().run()
|
|
|
|
def transition(self) -> bool:
|
|
if (
|
|
scene := self.scene()
|
|
) == Scene.INFRA_DETAILS and self.detect_room() == "meeting":
|
|
self.tap((500, 1000))
|
|
elif scene == Scene.INFRA_CONFIDENTIAL:
|
|
if self.animation(((1410, 660), (1920, 1080))):
|
|
return
|
|
if self.success:
|
|
return True
|
|
# 检查是否领过线索
|
|
daily_scope = ((1822, 208), (1886, 243))
|
|
if self.find("clue/badge_new", scope=daily_scope):
|
|
self.tap((1800, 270))
|
|
else:
|
|
return True
|
|
elif scene == Scene.CLUE_DAILY:
|
|
exit_pos = (1484, 152)
|
|
if self.find("clue/icon_notification"):
|
|
logger.info("当前获得线索数已经达到最大值")
|
|
self.tap(exit_pos)
|
|
self.success = True
|
|
elif clue := clue_cls("daily"):
|
|
logger.info(f"领取今日线索({clue}号)")
|
|
self.tap("clue/button_get")
|
|
else:
|
|
# 今日线索已领取,点X退出
|
|
self.tap(exit_pos)
|
|
self.success = True
|
|
elif scene == Scene.CLUE_MESSAGE_BOARD:
|
|
self.cback(1, id="infra_back")
|
|
elif scene in self.waiting_scene:
|
|
self.waiting_solver()
|
|
else:
|
|
EnterRoomSolver().run("meeting", detail=False)
|