def _search_archives_entrance(self, name, skip_first_screenshot=True): """ Search for entrance using mini-touch scroll down at center Fixed number of scrolls until give up, may need to increase as more war archives campaigns are added """ detection_area = (565, 125, 700, 675) for _ in range(5): if skip_first_screenshot: skip_first_screenshot = False else: self.device.screenshot() entrance = self._get_archives_entrance(name) if entrance is not None: return entrance backup = self.config.cover(DEVICE_CONTROL_METHOD='minitouch') p1, p2 = random_rectangle_vector((0, -275), box=detection_area, random_range=(-50, -50, 50, 50), padding=20) self.device.drag(p1, p2, segments=2, shake=(0, 25), point_random=(0, 0, 0, 0), shake_random=(0, -5, 0, 5)) backup.recover() self.device.sleep(0.3) logger.warning('Failed to find archives entrance') return None
def _sos_signal_select(self, chapter): """ select a SOS signal Args: chapter (int): 3 to 10. Pages: in: page_campaign out: page_campaign, in target chapter Returns: bool: whether select successful """ logger.hr(f'Select chapter {chapter} signal ') self.ui_click(SIGNAL_SEARCH_ENTER, appear_button=CAMPAIGN_CHECK, check_button=SIGNAL_LIST_CHECK, skip_first_screenshot=True) detection_area = (620, 285, 720, 485) for _ in range(0, 5): target_button = self._find_target_chapter(chapter) if target_button is not None: self._sos_signal_confirm(entrance=target_button) return True # backup = self.config.cover(DEVICE_CONTROL_METHOD='minitouch') p1, p2 = random_rectangle_vector( (0, -200), box=detection_area, random_range=(-50, -50, 50, 50), padding=20) self.device.drag(p1, p2, segments=2, shake=(0, 25), point_random=(0, 0, 0, 0), shake_random=(0, -5, 0, 5)) # backup.recover() self.device.sleep((0.6, 1)) self.device.screenshot() return False
def _commission_swipe(self, distance=300): # Distance of two commission is 146px p1, p2 = random_rectangle_vector( (0, -distance), box=(620, 67, 1154, 692), random_range=(-20, -5, 20, 5)) self.device.drag(p1, p2, segments=2, shake=(25, 0), point_random=(0, 0, 0, 0), shake_random=(-5, 0, 5, 0)) self.device.sleep(0.3) self.device.screenshot()
def _search_archives_entrance(self, name, skip_first_screenshot=True): """ Search for entrance using mini-touch scroll down at center Fixed number of scrolls until give up, may need to increase as more war archives campaigns are added """ detection_area = (565, 125, 700, 675) for _ in range(10): if skip_first_screenshot: skip_first_screenshot = False else: self.device.screenshot() # Drag may result in accidental exit, recover # before starting next search attempt while not self.appear(WAR_ARCHIVES_CHECK): self.ui_ensure(destination=page_archives) while not self._archives_loading_complete(): self.device.screenshot() entrance = self._get_archives_entrance(name) if entrance is not None: return entrance # backup = self.config.cover(DEVICE_CONTROL_METHOD='minitouch') p1, p2 = random_rectangle_vector((0, -275), box=detection_area, random_range=(-50, -50, 50, 50), padding=20) self.device.drag(p1, p2, segments=2, shake=(0, 25), point_random=(0, 0, 0, 0), shake_random=(0, -5, 0, 5)) # backup.recover() self.device.sleep(0.3) logger.warning('Failed to find archives entrance') return None