Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
 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