Beispiel #1
0
def visit_near_pokestops(bot, pokestops=None):
    # type: (PokemonGoBot, Optional[List[Fort]]) -> Dict[Str, List[PokeStop]]

    def log(text, color="black"):
        logger.log(text, color=color, prefix="PokeStop")

    if pokestops is None:
        return

    # If we're debugging, don't filter pokestops so we can test if they are on cooldown
    if not bot.config.debug:
        pokestops = filtered_forts(bot.stepper.current_lat, bot.stepper.current_lng, pokestops)

    now = int(time.time()) * 1000
    for pokestop in pokestops:
        dist = distance(bot.stepper.current_lat, bot.stepper.current_lng, pokestop.latitude, pokestop.longitude)

        if dist < 15:
            if pokestop.cooldown_timestamp_ms < now:
                manager.fire_with_context("pokestop_arrived", bot, pokestop=pokestop)
            elif bot.config.debug:
                log(
                    "Nearby fort found is in cooldown for {} ({}m away)".format(
                        format_time((pokestop.cooldown_timestamp_ms - now) / 1000), ceil(dist)
                    ),
                    color="yellow",
                )
Beispiel #2
0
    def visit_near_pokestops(self, bot, pokestops=None):
        # type: (PokemonGoBot, Optional[List[Fort]]) -> Dict[Str, List[PokeStop]]

        if pokestops is None:
            return

        # If we're debugging, don't filter pokestops so we can test if they are on cooldown
        if not bot.config["debug"]:
            pokestops = filtered_forts(bot.stepper.current_lat,
                                       bot.stepper.current_lng, pokestops)

        now = int(time.time()) * 1000
        for pokestop in pokestops:
            dist = distance(bot.stepper.current_lat, bot.stepper.current_lng,
                            pokestop.latitude, pokestop.longitude)

            if dist < 35:
                if pokestop.is_in_cooldown() is False:
                    self.event_manager.fire_with_context('pokestop_arrived',
                                                         bot,
                                                         pokestop=pokestop)
                elif bot.config["debug"]:
                    self.log(
                        "Nearby fort found is in cooldown for {} ({}m away)".
                        format(
                            format_time(
                                (pokestop.cooldown_timestamp_ms - now) / 1000),
                            ceil(dist)),
                        color="yellow")
Beispiel #3
0
    def _work_on_forts(self, position, map_cells):
        forts = filtered_forts(position[0], position[1], sum([cell.get("forts", []) for cell in map_cells], []))
        if forts:
            walk_worker = WalkTowardsFortWorker(forts[0], self)
            walk_worker.work()

            spinner_worker = SeenFortWorker(forts[0], self)
            spinner_worker.work()
Beispiel #4
0
    def _work_on_forts(self, position, map_cells):
        # type: (Tuple[float, float], List[Cell]) -> None
        forts = filtered_forts(position[0], position[1], sum([cell.pokestops for cell in map_cells], []))
        if forts:
            walk_worker = WalkTowardsFortWorker(forts[0], self)
            walk_worker.work()

            spinner_worker = SeenFortWorker(forts[0], self)
            spinner_worker.work()
Beispiel #5
0
    def test_filtered_forts(self):

        forts = [
            self._create_fort("pokestop", "test_1", 51.50204, -0.11955),
            self._create_fort("pokestop", "test_2", 51.503342, -0.119668),
            self._create_fort("pokestop", "test_3", 51.504250, -0.117458),
            self._create_fort("gym", "test_4", 51.503602, -0.118756)
        ]

        returned_forts = filtered_forts(51.503056, -0.119500, forts)

        assert len(returned_forts) == 3
        assert returned_forts[0].fort_id == 'pokestop_test_2'
        assert returned_forts[2].fort_id == 'pokestop_test_3'
        assert returned_forts[1].fort_id == 'pokestop_test_1'
Beispiel #6
0
    def work_on_cell(self, cell):
        # type: (Cell, bool) -> None

        self.fire("pokemon_found", encounters=cell.catchable_pokemon + cell.wild_pokemon)

        # TODO: Refactor WalkTowardsFortWorker
        # self.fire("pokestops_found", pokestops=cell.pokestops)

        pokestops = filtered_forts(self.position[0], self.position[1], cell.pokestops)

        for pokestop in pokestops:
            walk_worker = WalkTowardsFortWorker(pokestop, self)
            walk_worker.work()

            self.fire("pokestop_arrived", pokestop=pokestop)