2023-10-04 13:23:46 +00:00
|
|
|
from module.base.button import ClickButton
|
2023-10-04 03:06:28 +00:00
|
|
|
from module.base.utils import area_limit
|
|
|
|
from module.logger import logger
|
|
|
|
from tasks.rogue.assets.assets_rogue_event import CHOOSE_OPTION, CHOOSE_OPTION_CONFIRM, CHOOSE_STORY, OCR_EVENT
|
|
|
|
from tasks.rogue.assets.assets_rogue_ui import BLESSING_CONFIRM, PAGE_EVENT
|
|
|
|
from tasks.rogue.bleesing.ui import RogueUI
|
|
|
|
|
|
|
|
|
|
|
|
class RogueEvent(RogueUI):
|
|
|
|
def handle_event_continue(self):
|
|
|
|
if self.appear(PAGE_EVENT, interval=0.6):
|
|
|
|
logger.info(f'{PAGE_EVENT} -> {BLESSING_CONFIRM}')
|
|
|
|
self.device.click(BLESSING_CONFIRM)
|
|
|
|
return True
|
|
|
|
if self.appear_then_click(CHOOSE_STORY, interval=2):
|
|
|
|
return True
|
|
|
|
if self.appear_then_click(CHOOSE_OPTION_CONFIRM, interval=2):
|
|
|
|
self.interval_reset([
|
|
|
|
PAGE_EVENT,
|
|
|
|
CHOOSE_STORY,
|
|
|
|
CHOOSE_OPTION,
|
|
|
|
])
|
|
|
|
return True
|
|
|
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
def handle_event_option(self):
|
|
|
|
options = CHOOSE_OPTION.match_multi_template(self.device.image)
|
2023-10-04 18:22:49 +00:00
|
|
|
# Check color also, option with requirements might be disabled
|
|
|
|
options = [
|
|
|
|
option for option in options
|
|
|
|
if self.image_color_count(option.area, color=(181, 162, 126), threshold=221, count=25)
|
|
|
|
]
|
2023-10-04 03:06:28 +00:00
|
|
|
count = len(options)
|
|
|
|
if count == 0:
|
|
|
|
return False
|
|
|
|
|
|
|
|
logger.attr('EventOption', count)
|
|
|
|
for button in options:
|
|
|
|
button.button = area_limit(button.button, OCR_EVENT.area)
|
|
|
|
# Only one option, click directly
|
|
|
|
if count == 1:
|
|
|
|
if self.interval_is_reached(CHOOSE_OPTION, interval=2):
|
|
|
|
self.device.click(options[0])
|
|
|
|
self.interval_reset(CHOOSE_OPTION)
|
|
|
|
return True
|
|
|
|
|
2023-10-04 13:23:46 +00:00
|
|
|
if self.interval_is_reached(CHOOSE_OPTION, interval=2):
|
|
|
|
option = self._event_option_filter(options)
|
|
|
|
self.device.click(option)
|
|
|
|
self.interval_reset(CHOOSE_OPTION)
|
|
|
|
return True
|
|
|
|
|
2023-10-04 03:06:28 +00:00
|
|
|
return False
|
2023-10-04 13:23:46 +00:00
|
|
|
|
|
|
|
def _event_option_filter(self, options: list[ClickButton]) -> ClickButton:
|
|
|
|
# TODO: OCR options instead of choosing the last one
|
|
|
|
return options[-1]
|