StarRailCopilot/tasks/base/daemon.py
2024-01-07 11:52:26 +08:00

68 lines
2.7 KiB
Python

from module.base.timer import Timer
from module.logger import logger
from tasks.base.assets.assets_base_daemon import *
from tasks.base.main_page import MainPage
from tasks.base.page import page_main, page_rogue
from tasks.daily.assets.assets_daily_camera import PICTURE_TAKEN
from tasks.map.assets.assets_map_bigmap import TELEPORT_RIGHT
from tasks.rogue.route.base import RouteBase
class Daemon(RouteBase):
def run(self):
# Rebind daemon settings along with rogue settings
self.config.bind('Daemon', func_list=['Rogue'])
self.device.disable_stuck_detection()
teleport_confirm = Timer(1, count=5)
while 1:
self.device.screenshot()
# Check lang
if not MainPage._lang_checked and self.ui_page_appear(page_main, interval=5):
self.handle_lang_check(page=page_main)
# Check again
if not MainPage._lang_check_success:
MainPage._lang_checked = False
# Story
if self.appear_then_click(STORY_NEXT, interval=0.7):
self.interval_reset(STORY_OPTION)
self.interval_reset(INTERACT_INVESTIGATE)
continue
if self.appear_then_click(STORY_OPTION, interval=1):
self.interval_reset(INTERACT_INVESTIGATE)
continue
# Map interact
if self.appear_then_click(INTERACT_TREASURE, interval=1):
continue
if self.appear_then_click(INTERACT_INVESTIGATE, interval=2):
continue
if self.appear_then_click(INTERACT_COLLECT, interval=1):
continue
# Story teleport
if self.appear_then_click(TELEPORT_RIGHT, interval=3):
teleport_confirm.reset()
continue
if teleport_confirm.started() and not teleport_confirm.reached():
if self.handle_popup_confirm():
logger.info(f'{TELEPORT_RIGHT} -> popup')
continue
# Chat
if self.appear_then_click(CHAT_OPTION, interval=3):
continue
if self.appear_then_click(CHAT_CLOSE, interval=3):
continue
# Popup
if self.handle_reward(interval=1.5):
continue
if self.handle_ui_close(PICTURE_TAKEN, interval=1):
continue
# Rogue
if self.handle_blessing():
continue
if self.ui_page_appear(page_rogue):
if self.handle_event_continue():
continue
if self.handle_event_option():
continue