Files
AzurLaneAutoScript/module/island/ui.py

105 lines
3.1 KiB
Python
Raw Normal View History

from module.base.timer import Timer
2025-10-04 22:26:48 +08:00
from module.island.assets import *
from module.logger import logger
2025-10-04 22:26:48 +08:00
from module.ocr.ocr import Duration
2026-02-08 23:06:50 +08:00
from module.ui.assets import SHOP_BACK_ARROW
from module.ui.page import page_island_phone
2025-10-04 22:26:48 +08:00
from module.ui.ui import UI
2025-10-04 22:26:48 +08:00
class IslandProductionTime(Duration):
def after_process(self, result):
result = super().after_process(result)
if result == '0:40:00':
result = '01:40:00'
return result
2025-10-04 22:26:48 +08:00
2025-10-04 22:26:48 +08:00
OCR_PRODUCTION_TIME = IslandProductionTime(OCR_PRODUCTION_TIME, lang='azur_lane_jp', name='OCR_PRODUCTION_TIME')
OCR_PRODUCTION_TIME_REMAIN = Duration(OCR_PRODUCTION_TIME_REMAIN, name='OCR_PRODUCTION_TIME_REMAIN')
2025-10-14 22:44:08 +08:00
2025-10-04 22:26:48 +08:00
class IslandUI(UI):
def island_in_management(self, interval=0):
2026-02-17 20:58:33 +08:00
"""
Args:
interval (int):
Returns:
2025-10-04 22:26:48 +08:00
bool: if in page ISLAND_MANAGEMENT_CHECK
2026-02-17 20:58:33 +08:00
"""
2025-10-04 22:26:48 +08:00
return self.appear(ISLAND_MANAGEMENT_CHECK, offset=(20, 20), interval=interval)
2026-02-17 20:58:33 +08:00
2025-10-04 22:26:48 +08:00
def island_management_enter(self):
"""
Pages:
in: page_island_phone
out: ISLAND_MANAGEMENT_CHECK
"""
logger.info('Island management enter')
2025-10-04 22:26:48 +08:00
self.interval_clear(ISLAND_MANAGEMENT_CHECK)
self.ui_click(
click_button=ISLAND_MANAGEMENT,
check_button=self.island_in_management,
offset=(20, 20),
retry_wait=2,
skip_first_screenshot=True
)
2025-10-04 22:26:48 +08:00
def island_management_quit(self):
2025-10-04 22:26:48 +08:00
"""
Pages:
2025-10-04 22:26:48 +08:00
in: ISLAND_MANAGEMENT_CHECK
out: page_island_phone
2026-02-17 20:58:33 +08:00
"""
logger.info('Island management quit')
2026-02-17 20:58:33 +08:00
self.ui_click(
2025-10-04 22:26:48 +08:00
click_button=SHOP_BACK_ARROW,
check_button=page_island_phone.check_button,
2026-02-17 20:58:33 +08:00
offset=(20, 20),
retry_wait=2,
skip_first_screenshot=True
)
2025-10-04 22:26:48 +08:00
def island_product_quit(self):
2025-10-14 22:44:08 +08:00
"""
2025-10-04 22:26:48 +08:00
Execute quit product page
2025-10-04 22:26:48 +08:00
"""
logger.info('Island product quit')
2025-10-04 22:26:48 +08:00
self.interval_clear(ISLAND_MANAGEMENT_CHECK)
2025-10-04 22:26:48 +08:00
self.ui_click(
click_button=SHOP_BACK_ARROW,
2025-10-04 22:26:48 +08:00
check_button=self.island_in_management,
2025-10-04 22:26:48 +08:00
offset=(20, 20),
retry_wait=2,
skip_first_screenshot=True
)
def ui_ensure_management_page(self, skip_first_screenshot=True):
"""
Pages:
in: page_island_phone or product page
out: ISLAND_MANAGEMENT_CHECK
"""
logger.info('UI ensure management page')
self.interval_clear(ISLAND_MANAGEMENT_CHECK)
confirm_timer = Timer(1, count=2).start()
while 1:
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.screenshot()
if self.island_in_management():
if confirm_timer.reached():
break
continue
else:
confirm_timer.reset()
if self.appear_then_click(SHOP_BACK_ARROW, offset=(20, 20), interval=2):
continue
if self.appear_then_click(ISLAND_MANAGEMENT, offset=(20, 20), interval=2):
continue