mirror of
https://github.com/W1NDes/M-AzurLaneAutoScript.git
synced 2026-05-14 07:08:04 +08:00
87 lines
2.5 KiB
Python
87 lines
2.5 KiB
Python
from module.base.button import ButtonGrid
|
|
from module.base.decorator import cached_property
|
|
from module.base.timer import Timer
|
|
from module.os_handler.assets import *
|
|
from module.logger import logger
|
|
from module.ui.navbar import Navbar
|
|
from module.ui.ui import UI
|
|
|
|
|
|
class OSShopUI(UI):
|
|
def os_shop_load_ensure(self, skip_first_screenshot=True):
|
|
"""
|
|
Switching between sidebar clicks for some
|
|
takes a bit of processing before fully loading
|
|
like guild logistics
|
|
|
|
Args:
|
|
skip_first_screenshot (bool):
|
|
|
|
Returns:
|
|
bool: Whether expected assets loaded completely
|
|
"""
|
|
ensure_timeout = Timer(3, count=6).start()
|
|
while True:
|
|
if skip_first_screenshot:
|
|
skip_first_screenshot = False
|
|
else:
|
|
self.device.screenshot()
|
|
|
|
# End
|
|
if self.appear(PORT_SUPPLY_CHECK):
|
|
return True
|
|
|
|
# Exception
|
|
if ensure_timeout.reached():
|
|
logger.warning('Wait for loaded assets is incomplete, ensure not guaranteed')
|
|
return False
|
|
|
|
@cached_property
|
|
def _os_shop_side_navbar(self):
|
|
"""
|
|
limited_sidebar 4 options
|
|
NY
|
|
Liverpool
|
|
Gibraltar
|
|
St. Petersburg
|
|
"""
|
|
os_shop_side_navbar = ButtonGrid(
|
|
origin=(44, 266), delta=(0, 87),
|
|
button_shape=(231, 46), grid_shape=(1, 4),
|
|
name='OS_SHOP_SIDE_NAVBAR')
|
|
|
|
return Navbar(grids=os_shop_side_navbar,
|
|
active_color=(43, 94, 248), active_threshold=221,
|
|
inactive_color=(12, 58, 86), inactive_threshold=221)
|
|
|
|
def os_shop_side_navbar_ensure(self, upper=None, bottom=None):
|
|
"""
|
|
Ensure able to transition to page and
|
|
page has loaded to completion
|
|
|
|
Args:
|
|
upper (int):
|
|
limited|regular
|
|
1 NY
|
|
2 Liverpool
|
|
3 Gibraltar
|
|
4 St. Petersburg
|
|
bottom (int):
|
|
limited|regular
|
|
4 NY
|
|
3 Liverpool
|
|
2 Gibraltar
|
|
1 St. Petersburg
|
|
|
|
Returns:
|
|
bool: if side_navbar set ensured
|
|
|
|
Pages:
|
|
in: PORT_SUPPLY_CHECK
|
|
out: PORT_SUPPLY_CHECK
|
|
"""
|
|
if self._os_shop_side_navbar.set(self, upper=upper, bottom=bottom) \
|
|
and self.os_shop_load_ensure():
|
|
return True
|
|
return False
|