diff --git a/assets/share/dungeon/ui/SIMULATED_UNIVERSE_CHECK.png b/assets/share/dungeon/ui/SIMULATED_UNIVERSE_CHECK.png new file mode 100644 index 000000000..58d458c76 Binary files /dev/null and b/assets/share/dungeon/ui/SIMULATED_UNIVERSE_CHECK.png differ diff --git a/assets/share/dungeon/ui/SIMULATED_UNIVERSE_CLICK.png b/assets/share/dungeon/ui/SIMULATED_UNIVERSE_CLICK.png new file mode 100644 index 000000000..1edf6ed58 Binary files /dev/null and b/assets/share/dungeon/ui/SIMULATED_UNIVERSE_CLICK.png differ diff --git a/assets/share/dungeon/ui/SURVIVAL_INDEX_OE_LOADED.png b/assets/share/dungeon/ui/SURVIVAL_INDEX_OE_LOADED.png new file mode 100644 index 000000000..1deb1e701 Binary files /dev/null and b/assets/share/dungeon/ui/SURVIVAL_INDEX_OE_LOADED.png differ diff --git a/assets/share/dungeon/ui/SURVIVAL_INDEX_LOADED.SEARCH.png b/assets/share/dungeon/ui/SURVIVAL_INDEX_SU_LOADED.SEARCH.png similarity index 100% rename from assets/share/dungeon/ui/SURVIVAL_INDEX_LOADED.SEARCH.png rename to assets/share/dungeon/ui/SURVIVAL_INDEX_SU_LOADED.SEARCH.png diff --git a/assets/share/dungeon/ui/SURVIVAL_INDEX_LOADED.png b/assets/share/dungeon/ui/SURVIVAL_INDEX_SU_LOADED.png similarity index 100% rename from assets/share/dungeon/ui/SURVIVAL_INDEX_LOADED.png rename to assets/share/dungeon/ui/SURVIVAL_INDEX_SU_LOADED.png diff --git a/dev_tools/keyword_extract.py b/dev_tools/keyword_extract.py index f681fff8f..a53c9d89b 100644 --- a/dev_tools/keyword_extract.py +++ b/dev_tools/keyword_extract.py @@ -557,7 +557,7 @@ class KeywordExtract: self.load_keywords(['模拟宇宙', '拟造花萼(金)', '拟造花萼(赤)', '凝滞虚影', '侵蚀隧洞', '历战余响', '忘却之庭', '虚构叙事']) self.write_keywords(keyword_class='DungeonNav', output_file='./tasks/dungeon/keywords/nav.py') - self.load_keywords(['行动摘要', '生存索引', '每日实训', '逐光捡金', '战术训练']) + self.load_keywords(['行动摘要', '生存索引', '每日实训', '模拟宇宙', '逐光捡金', '战术训练']) self.write_keywords(keyword_class='DungeonTab', output_file='./tasks/dungeon/keywords/tab.py') self.load_keywords(['前往', '领取', '进行中', '已领取', '本日活跃度已满']) self.write_keywords(keyword_class='DailyQuestState', output_file='./tasks/daily/keywords/daily_quest_state.py') diff --git a/tasks/assignment/assets/__init__.py b/tasks/assignment/assets/__init__.py deleted file mode 100644 index 92bc0ebf3..000000000 --- a/tasks/assignment/assets/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from tasks.assignment.assets.assets_assignment_ui import ( - ALL_ABOUT_BOOTHILL_CHECK, ALL_ABOUT_BOOTHILL_CLICK, - CHARACTER_MATERIALS_CHECK, CHARACTER_MATERIALS_CLICK, - EXP_MATERIALS_CREDITS_CHECK, EXP_MATERIALS_CREDITS_CLICK, GROUP_SEARCH, - SYNTHESIS_MATERIALS_CHECK, SYNTHESIS_MATERIALS_CLICK) - -for group_button_wrapper in ( - ALL_ABOUT_BOOTHILL_CHECK, ALL_ABOUT_BOOTHILL_CLICK, - CHARACTER_MATERIALS_CHECK, CHARACTER_MATERIALS_CLICK, - EXP_MATERIALS_CREDITS_CHECK, EXP_MATERIALS_CREDITS_CLICK, - SYNTHESIS_MATERIALS_CHECK, SYNTHESIS_MATERIALS_CLICK, -): - group_button_wrapper.load_search(GROUP_SEARCH.button) diff --git a/tasks/assignment/ui.py b/tasks/assignment/ui.py index 5eeba0732..f6eb29fe6 100644 --- a/tasks/assignment/ui.py +++ b/tasks/assignment/ui.py @@ -15,7 +15,7 @@ from tasks.assignment.assets.assets_assignment_ui import * from tasks.assignment.keywords import * from tasks.base.assets.assets_base_page import ASSIGNMENT_CHECK from tasks.base.ui import UI -from tasks.dungeon.ui import DungeonTabSwitch as Switch +from tasks.dungeon.ui import DungeonTabSwitch class AssignmentStatus(Enum): @@ -102,7 +102,11 @@ class AssignmentOcr(Ocr): return matched -ASSIGNMENT_GROUP_SWITCH = Switch( +class AssignmentGroupSwitch(DungeonTabSwitch): + SEARCH_BUTTON = GROUP_SEARCH + + +ASSIGNMENT_GROUP_SWITCH = AssignmentGroupSwitch( 'AssignmentGroupSwitch', is_selector=True ) diff --git a/tasks/dungeon/assets/assets_dungeon_ui.py b/tasks/dungeon/assets/assets_dungeon_ui.py index 77c5fe3e6..75bbfd166 100644 --- a/tasks/dungeon/assets/assets_dungeon_ui.py +++ b/tasks/dungeon/assets/assets_dungeon_ui.py @@ -123,6 +123,26 @@ OPERATION_BRIEFING_CLICK = ButtonWrapper( button=(149, 92, 193, 136), ), ) +SIMULATED_UNIVERSE_CHECK = ButtonWrapper( + name='SIMULATED_UNIVERSE_CHECK', + share=Button( + file='./assets/share/dungeon/ui/SIMULATED_UNIVERSE_CHECK.png', + area=(352, 99, 386, 133), + search=(332, 79, 406, 153), + color=(96, 96, 96), + button=(352, 99, 386, 133), + ), +) +SIMULATED_UNIVERSE_CLICK = ButtonWrapper( + name='SIMULATED_UNIVERSE_CLICK', + share=Button( + file='./assets/share/dungeon/ui/SIMULATED_UNIVERSE_CLICK.png', + area=(352, 99, 386, 133), + search=(332, 79, 406, 153), + color=(122, 120, 120), + button=(352, 99, 386, 133), + ), +) SURVIVAL_INDEX_CHECK = ButtonWrapper( name='SURVIVAL_INDEX_CHECK', share=Button( @@ -143,10 +163,20 @@ SURVIVAL_INDEX_CLICK = ButtonWrapper( button=(332, 94, 370, 133), ), ) -SURVIVAL_INDEX_LOADED = ButtonWrapper( - name='SURVIVAL_INDEX_LOADED', +SURVIVAL_INDEX_OE_LOADED = ButtonWrapper( + name='SURVIVAL_INDEX_OE_LOADED', share=Button( - file='./assets/share/dungeon/ui/SURVIVAL_INDEX_LOADED.png', + file='./assets/share/dungeon/ui/SURVIVAL_INDEX_OE_LOADED.png', + area=(473, 207, 498, 232), + search=(453, 187, 518, 252), + color=(185, 135, 74), + button=(473, 207, 498, 232), + ), +) +SURVIVAL_INDEX_SU_LOADED = ButtonWrapper( + name='SURVIVAL_INDEX_SU_LOADED', + share=Button( + file='./assets/share/dungeon/ui/SURVIVAL_INDEX_SU_LOADED.png', area=(451, 286, 476, 302), search=(449, 263, 489, 356), color=(142, 150, 197), diff --git a/tasks/dungeon/keywords/tab.py b/tasks/dungeon/keywords/tab.py index 6dbec3781..22fab66d3 100644 --- a/tasks/dungeon/keywords/tab.py +++ b/tasks/dungeon/keywords/tab.py @@ -30,8 +30,17 @@ Daily_Training = DungeonTab( jp='デイリー訓練', es='Entrenamiento diario', ) -Treasures_Lightward = DungeonTab( +Simulated_Universe = DungeonTab( id=4, + name='Simulated_Universe', + cn='模拟宇宙', + cht='模擬宇宙', + en='Simulated Universe', + jp='模擬宇宙', + es='Universo Simulado', +) +Treasures_Lightward = DungeonTab( + id=5, name='Treasures_Lightward', cn='逐光捡金', cht='逐光撿金', @@ -40,7 +49,7 @@ Treasures_Lightward = DungeonTab( es='En busca de fortuna', ) Strategic_Training = DungeonTab( - id=5, + id=6, name='Strategic_Training', cn='战术训练', cht='戰術訓練', diff --git a/tasks/dungeon/ui.py b/tasks/dungeon/ui.py index 571771f00..5faecc52d 100644 --- a/tasks/dungeon/ui.py +++ b/tasks/dungeon/ui.py @@ -33,12 +33,14 @@ from tasks.map.keywords import KEYWORDS_MAP_WORLD, MapPlane class DungeonTabSwitch(Switch): + SEARCH_BUTTON = TAB_SEARCH + def add_state(self, state, check_button, click_button=None): # Load search if check_button is not None: - check_button.load_search(TAB_SEARCH.area) + check_button.load_search(self.__class__.SEARCH_BUTTON.area) if click_button is not None: - click_button.load_search(TAB_SEARCH.area) + click_button.load_search(self.__class__.SEARCH_BUTTON.area) return super().add_state(state, check_button, click_button) def click(self, state, main): @@ -68,6 +70,11 @@ SWITCH_DUNGEON_TAB.add_state( check_button=SURVIVAL_INDEX_CHECK, click_button=SURVIVAL_INDEX_CLICK ) +SWITCH_DUNGEON_TAB.add_state( + KEYWORDS_DUNGEON_TAB.Simulated_Universe, + check_button=SIMULATED_UNIVERSE_CHECK, + click_button=SIMULATED_UNIVERSE_CLICK +) SWITCH_DUNGEON_TAB.add_state( KEYWORDS_DUNGEON_TAB.Treasures_Lightward, check_button=TREASURES_LIGHTWARD_CHECK, @@ -296,8 +303,11 @@ class DungeonUI(DungeonState): if timeout.reached(): logger.warning('Wait survival index loaded timeout') return False - if self.appear(SURVIVAL_INDEX_LOADED): - logger.info('Survival index loaded') + if self.appear(SURVIVAL_INDEX_SU_LOADED): + logger.info('Survival index loaded, SURVIVAL_INDEX_SU_LOADED') + return True + if self.appear(SURVIVAL_INDEX_OE_LOADED): + logger.info('Survival index loaded, SURVIVAL_INDEX_OE_LOADED') return True def _dungeon_wait_treasures_lightward_loaded(self, skip_first_screenshot=True): @@ -703,7 +713,7 @@ class DungeonUI(DungeonState): self._rogue_teleport() """ self.dungeon_tab_goto(KEYWORDS_DUNGEON_TAB.Survival_Index) - if self.appear(SURVIVAL_INDEX_LOADED): + if self.appear(SURVIVAL_INDEX_SU_LOADED): logger.info('Already at nav Simulated_Universe') else: self._dungeon_nav_goto(KEYWORDS_DUNGEON_NAV.Simulated_Universe)