mower-ng/mower/solvers/infra/clue/daily.py
zhbaor c86e7ac651
All checks were successful
ci/woodpecker/push/check_format Pipeline was successful
场景图导航改写为solver
2025-01-30 10:14:54 +08:00

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)