Add: war archives support for app

This commit is contained in:
nEEtdo0d 2021-10-10 23:38:10 -04:00
parent 5cb9ee1895
commit d9cec4134e
6 changed files with 37 additions and 32 deletions

View File

@ -153,6 +153,11 @@ class AzurLaneAutoScript:
from module.sos.sos import CampaignSos from module.sos.sos import CampaignSos
CampaignSos(config=self.config, device=self.device).run() CampaignSos(config=self.config, device=self.device).run()
def war_archives(self):
from module.war_archives.war_archives import CampaignWarArchives
CampaignWarArchives(config=self.config, device=self.device).run(
name=self.config.Campaign_Name, folder=self.config.Campaign_Event, mode=self.config.Campaign_Mode)
def event_ab(self): def event_ab(self):
from module.event.campaign_ab import CampaignAB from module.event.campaign_ab import CampaignAB
CampaignAB(config=self.config, device=self.device).run() CampaignAB(config=self.config, device=self.device).run()

View File

@ -58,11 +58,11 @@ class CampaignBase(CampaignBase_):
if entrance is not None: if entrance is not None:
return entrance return entrance
backup = self.config.cover(DEVICE_CONTROL_METHOD='minitouch') # backup = self.config.cover(DEVICE_CONTROL_METHOD='minitouch')
p1, p2 = random_rectangle_vector( p1, p2 = random_rectangle_vector(
(0, -275), box=detection_area, random_range=(-50, -50, 50, 50), padding=20) (0, -275), box=detection_area, random_range=(-50, -50, 50, 50), padding=20)
self.device.drag(p1, p2, segments=2, shake=(0, 25), point_random=(0, 0, 0, 0), shake_random=(0, -5, 0, 5)) self.device.drag(p1, p2, segments=2, shake=(0, 25), point_random=(0, 0, 0, 0), shake_random=(0, -5, 0, 5))
backup.recover() # backup.recover()
self.device.sleep(0.3) self.device.sleep(0.3)
logger.warning('Failed to find archives entrance') logger.warning('Failed to find archives entrance')
@ -82,13 +82,11 @@ class CampaignBase(CampaignBase_):
result = self.ui_ensure(destination=page_archives) result = self.ui_ensure(destination=page_archives)
WAR_ARCHIVES_SWITCH.set(mode, main=self) WAR_ARCHIVES_SWITCH.set(mode, main=self)
self.handle_stage_icon_spawn()
entrance = self._search_archives_entrance(self.config.WAR_ARCHIVES_NAME) entrance = self._search_archives_entrance(self.config.Campaign_Event)
if entrance is not None: if entrance is not None:
self.ui_click(entrance, appear_button=WAR_ARCHIVES_CHECK, check_button=WAR_ARCHIVES_CAMPAIGN_CHECK, self.ui_click(entrance, appear_button=WAR_ARCHIVES_CHECK, check_button=WAR_ARCHIVES_CAMPAIGN_CHECK,
skip_first_screenshot=True) skip_first_screenshot=True)
self.handle_stage_icon_spawn()
else: else:
logger.critical('Respective server may not yet support the chosen War Archives campaign, ' logger.critical('Respective server may not yet support the chosen War Archives campaign, '
'check back in the next app update') 'check back in the next app update')

View File

@ -93,7 +93,7 @@ class CampaignUI(UI, CampaignOcr):
self.campaign_ensure_chapter(index=chapter) self.campaign_ensure_chapter(index=chapter)
elif chapter in ['a', 'b', 'c', 'd', 'ex_sp', 'as', 'bs', 'cs', 'ds']: elif chapter in ['a', 'b', 'c', 'd', 'ex_sp', 'as', 'bs', 'cs', 'ds']:
self.ui_goto(page_event) self.ui_goto_event()
if chapter in ['a', 'b', 'as', 'bs']: if chapter in ['a', 'b', 'as', 'bs']:
self.campaign_ensure_mode('normal') self.campaign_ensure_mode('normal')
elif chapter in ['c', 'd', 'cs', 'ds']: elif chapter in ['c', 'd', 'cs', 'ds']:
@ -103,7 +103,7 @@ class CampaignUI(UI, CampaignOcr):
self.campaign_ensure_chapter(index=chapter) self.campaign_ensure_chapter(index=chapter)
elif chapter == 'sp': elif chapter == 'sp':
self.ui_goto(page_sp) self.ui_goto_sp()
self.campaign_ensure_chapter(index=chapter) self.campaign_ensure_chapter(index=chapter)
else: else:

View File

@ -144,8 +144,23 @@ class InfoHandler(ModuleBase):
return False return False
if self.appear(USE_DATA_KEY, offset=(20, 20)): if self.appear(USE_DATA_KEY, offset=(20, 20)):
self.device.click(USE_DATA_KEY_NOTIFIED) skip_first_screenshot = True
self.device.sleep((0.5, 0.8)) while 1:
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.screenshot()
enabled = self.image_color_count(USE_DATA_KEY_NOTIFIED,
color=(140, 207, 66), threshold=180, count=10)
if enabled:
break
if self.appear(USE_DATA_KEY, interval=5):
self.device.click(USE_DATA_KEY_NOTIFIED)
continue
self.config.USE_DATA_KEY = False # Reset on success as task can be stopped before can be recovered
return self.handle_popup_confirm('USE_DATA_KEY') return self.handle_popup_confirm('USE_DATA_KEY')
return False return False

View File

@ -211,6 +211,12 @@ class UI(InfoHandler):
def ui_goto_main(self): def ui_goto_main(self):
return self.ui_ensure(destination=page_main) return self.ui_ensure(destination=page_main)
def ui_goto_event(self):
return self.ui_ensure(destination=page_event)
def ui_goto_sp(self):
return self.ui_ensure(destination=page_sp)
def ui_ensure_index(self, index, letter, next_button, prev_button, skip_first_screenshot=False, fast=True, def ui_ensure_index(self, index, letter, next_button, prev_button, skip_first_screenshot=False, fast=True,
interval=(0.2, 0.3), step_sleep=(0.2, 0.3), finish_sleep=(0.5, 0.8)): interval=(0.2, 0.3), step_sleep=(0.2, 0.3), finish_sleep=(0.5, 0.8)):
""" """

View File

@ -5,8 +5,6 @@ from module.ocr.ocr import DigitCounter
from module.war_archives.assets import OCR_DATA_KEY_CAMPAIGN, WAR_ARCHIVES_CAMPAIGN_CHECK from module.war_archives.assets import OCR_DATA_KEY_CAMPAIGN, WAR_ARCHIVES_CAMPAIGN_CHECK
DATA_KEY_CAMPAIGN = DigitCounter(OCR_DATA_KEY_CAMPAIGN, letter=(255, 247, 247), threshold=64) DATA_KEY_CAMPAIGN = DigitCounter(OCR_DATA_KEY_CAMPAIGN, letter=(255, 247, 247), threshold=64)
RECORD_SINCE = (0,)
RECORD_OPTION = ('DailyRecord', 'war_archives')
class CampaignWarArchives(CampaignRun, CampaignBase): class CampaignWarArchives(CampaignRun, CampaignBase):
def triggered_stop_condition(self, oil_check=True): def triggered_stop_condition(self, oil_check=True):
@ -22,25 +20,8 @@ class CampaignWarArchives(CampaignRun, CampaignBase):
# Else, check other stop conditions # Else, check other stop conditions
return super().triggered_stop_condition(oil_check) return super().triggered_stop_condition(oil_check)
def run_war_archives_daily(self): def run(self, name=None, folder='campaign_main', mode='normal', total=0):
""" backup = self.config.temporary(USE_DATA_KEY=True)
Returns: super().run(name, folder, mode, total)
bool: If executed.
"""
self.reward_backup_daily_reward_settings()
backup = self.config.cover(STOP_IF_COUNT_GREATER_THAN=4) # 4 data keys daily
if not self.config.record_executed_since(option=RECORD_OPTION, since=RECORD_SINCE):
self.run(self.config.WAR_ARCHIVES_STAGE, folder=self.config.WAR_ARCHIVES_NAME)
self.config.record_save(option=RECORD_OPTION)
executed = True
else:
executed = False
backup.recover()
self.reward_recover_daily_reward_settings()
return executed
def run(self, name=None, folder='campaign_main', total=0):
backup = self.config.cover(USE_DATA_KEY=True)
super().run(name, folder, total)
backup.recover() backup.recover()
self.ui_goto_main() # Go to main, as remaining in page can throw off Event task