diff --git a/module/storage/storage.py b/module/storage/storage.py index bdbea0973..a18423c6a 100644 --- a/module/storage/storage.py +++ b/module/storage/storage.py @@ -1,7 +1,6 @@ import numpy as np from module.base.button import ButtonGrid -from module.base.decorator import Config from module.base.timer import Timer from module.base.utils import rgb2gray from module.combat.assets import GET_ITEMS_1, GET_ITEMS_2 @@ -286,8 +285,25 @@ class StorageHandler(StorageUI): ]) logger.info(f'Disassemble once, expected amount: {amount}') - self.handle_info_bar() + for _ in self.loop(): + if self.appear(GET_ITEMS_1, offset=(5, 5), interval=3): + logger.info(f'{GET_ITEMS_1} -> {DISASSEMBLE_CONFIRM}') + self.device.click(DISASSEMBLE_CONFIRM) + continue + if self.appear(GET_ITEMS_2, offset=(5, 5), interval=3): + logger.info(f'{GET_ITEMS_2} -> {DISASSEMBLE_CONFIRM}') + self.device.click(DISASSEMBLE_CONFIRM) + continue + if self.handle_info_bar(): + continue + if self.appear(DISASSEMBLE_CANCEL, offset=(20, 20)): + break + self.interval_clear([ + GET_ITEMS_1, + GET_ITEMS_2, + ]) self.wait_until_stable(MATERIAL_STABLE_CHECK) + items = EQUIPMENT_ITEMS.predict(self.device.image, name=False, amount=True) if not len(items): logger.warning('No items in storage to disassemble') @@ -353,10 +369,12 @@ class StorageHandler(StorageUI): if self.handle_popup_confirm('DISASSEMBLE'): continue if self.appear(GET_ITEMS_1, offset=(5, 5), interval=3): + logger.info(f'{GET_ITEMS_1} -> {DISASSEMBLE_CONFIRM}') self.device.click(DISASSEMBLE_CONFIRM) success = True continue if self.appear(GET_ITEMS_2, offset=(5, 5), interval=3): + logger.info(f'{GET_ITEMS_2} -> {DISASSEMBLE_CONFIRM}') self.device.click(DISASSEMBLE_CONFIRM) success = True continue diff --git a/module/storage/ui.py b/module/storage/ui.py index 9ba518954..66bbacf2c 100644 --- a/module/storage/ui.py +++ b/module/storage/ui.py @@ -1,8 +1,9 @@ from module.base.button import ButtonGrid from module.base.decorator import cached_property +from module.combat.assets import GET_ITEMS_1, GET_ITEMS_2 from module.logger import logger -from module.storage.assets import MATERIAL_ENTER, DISASSEMBLE_CANCEL, MATERIAL_CHECK, MATERIAL_STABLE_CHECK, \ - EQUIPMENT_ENTER, DISASSEMBLE, EQUIPMENT_FILTER, EQUIPMENT_FILTER_CONFIRM +from module.storage.assets import DISASSEMBLE, DISASSEMBLE_CANCEL, DISASSEMBLE_CONFIRM, EQUIPMENT_ENTER, \ + EQUIPMENT_FILTER, EQUIPMENT_FILTER_CONFIRM, MATERIAL_CHECK, MATERIAL_ENTER, MATERIAL_STABLE_CHECK from module.ui.assets import STORAGE_CHECK from module.ui.page import page_storage from module.ui.setting import Setting @@ -147,11 +148,25 @@ class StorageUI(UI): self.interval_clear(STORAGE_CHECK) def _equipment_filter_enter(self): - self.interval_clear(EQUIPMENT_FILTER) - self.ui_click(EQUIPMENT_FILTER, appear_button=STORAGE_CHECK, check_button=EQUIPMENT_FILTER_CONFIRM, - skip_first_screenshot=True) + logger.info('Equipment filter enter') + self.interval_clear(STORAGE_CHECK) + for _ in self.loop(): + if self.appear(EQUIPMENT_FILTER_CONFIRM, offset=(20, 20)): + break + if self.appear(STORAGE_CHECK, offset=(20, 20), interval=3): + self.device.click(EQUIPMENT_FILTER) + continue + if self.appear(GET_ITEMS_1, offset=(5, 5), interval=3): + logger.info(f'{GET_ITEMS_1} -> {DISASSEMBLE_CONFIRM}') + self.device.click(DISASSEMBLE_CONFIRM) + continue + if self.appear(GET_ITEMS_2, offset=(5, 5), interval=3): + logger.info(f'{GET_ITEMS_2} -> {DISASSEMBLE_CONFIRM}') + self.device.click(DISASSEMBLE_CONFIRM) + continue def _equipment_filter_confirm(self): + logger.info('Equipment filter confirm') self.interval_clear(EQUIPMENT_FILTER_CONFIRM) self.ui_click(EQUIPMENT_FILTER_CONFIRM, check_button=STORAGE_CHECK, skip_first_screenshot=True) self._wait_until_storage_stable()