2021-01-26 17:07:34 +08:00
|
|
|
from module.base.timer import Timer
|
2020-12-23 18:48:41 +08:00
|
|
|
from module.combat.assets import *
|
|
|
|
|
from module.os_handler.assets import *
|
2021-01-26 17:07:34 +08:00
|
|
|
from module.os_handler.enemy_searching import EnemySearchingHandler
|
2020-12-23 18:48:41 +08:00
|
|
|
|
|
|
|
|
|
2021-01-26 17:07:34 +08:00
|
|
|
class MapEventHandler(EnemySearchingHandler):
|
2020-12-23 18:48:41 +08:00
|
|
|
def handle_map_get_items(self):
|
2021-01-26 17:07:34 +08:00
|
|
|
if self.is_in_map():
|
2021-01-21 11:30:43 +08:00
|
|
|
return False
|
|
|
|
|
|
2020-12-25 13:28:45 +08:00
|
|
|
if self.appear(GET_ITEMS_1, interval=2) \
|
|
|
|
|
or self.appear(GET_ITEMS_2, interval=2) \
|
|
|
|
|
or self.appear(GET_ITEMS_3, interval=2):
|
2020-12-23 18:48:41 +08:00
|
|
|
self.device.click(CLICK_SAFE_AREA)
|
|
|
|
|
return True
|
2020-12-29 17:37:30 +08:00
|
|
|
if self.appear(GET_ADAPTABILITY, interval=2):
|
2020-12-23 18:48:41 +08:00
|
|
|
self.device.click(CLICK_SAFE_AREA)
|
|
|
|
|
return True
|
2021-01-15 06:47:34 +08:00
|
|
|
if self.appear(GET_MEOWFFICER_ITEMS_1, interval=2):
|
|
|
|
|
self.device.click(CLICK_SAFE_AREA)
|
|
|
|
|
return True
|
|
|
|
|
if self.appear(GET_MEOWFFICER_ITEMS_2, interval=2):
|
2020-12-27 23:32:42 +08:00
|
|
|
self.device.click(CLICK_SAFE_AREA)
|
|
|
|
|
return True
|
2020-12-23 18:48:41 +08:00
|
|
|
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
def handle_map_archives(self):
|
|
|
|
|
if self.appear(MAP_ARCHIVES, interval=5):
|
|
|
|
|
self.device.click(CLICK_SAFE_AREA)
|
|
|
|
|
return True
|
2020-12-27 23:32:42 +08:00
|
|
|
if self.appear_then_click(MAP_WORLD, offset=(20, 20), interval=5):
|
|
|
|
|
return True
|
2020-12-23 18:48:41 +08:00
|
|
|
|
|
|
|
|
return False
|
2021-01-26 17:07:34 +08:00
|
|
|
|
|
|
|
|
def handle_map_event(self):
|
|
|
|
|
if self.handle_map_get_items():
|
|
|
|
|
return True
|
|
|
|
|
if self.handle_map_archives():
|
|
|
|
|
return True
|
|
|
|
|
if self.handle_guild_popup_cancel():
|
|
|
|
|
return True
|
|
|
|
|
if self.handle_story_skip():
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
def ensure_no_map_event(self, timeout=1.5):
|
|
|
|
|
confirm_timer = Timer(timeout, count=int(timeout / 0.5)).start()
|
|
|
|
|
|
|
|
|
|
while 1:
|
|
|
|
|
self.device.screenshot()
|
|
|
|
|
|
|
|
|
|
if self.handle_map_event():
|
|
|
|
|
confirm_timer.reset()
|
|
|
|
|
continue
|
|
|
|
|
if not self.is_in_map():
|
|
|
|
|
confirm_timer.reset()
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
if confirm_timer.reached():
|
|
|
|
|
break
|