2023-09-05 12:51:19 +08:00

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