Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions pokemongo_bot/cell_workers/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,3 +144,11 @@ def print_yellow(message):

def print_red(message):
print(u'\033[91m' + message.decode('utf-8') + '\033[0m')


def float_equal(f1, f2, epsilon=1e-8):
if f1 > f2:
return f1 - f2 < epsilon
if f2 > f1:
return f2 - f1 < epsilon
return True
8 changes: 7 additions & 1 deletion pokemongo_bot/step_walker.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from math import sqrt

from cell_workers.utils import distance
from cell_workers.utils import distance, float_equal
from human_behaviour import random_lat_long_delta, sleep


Expand Down Expand Up @@ -36,6 +36,12 @@ def __init__(self, bot, speed, dest_lat, dest_lng):
self.dLng = (dest_lng - self.initLng) / int(self.steps)
self.magnitude = self._pythagorean(self.dLat, self.dLng)

if float_equal(self.dLat, 0) or float_equal(self.dLng, 0):
# self.steps is very big, reducing the division to nearly 0
# the user should use smaller parameters (dest_lat, dest_lng)
raise RuntimeError('Coordinate passed to StepWalker are too far away from the Bot')


def step(self):
if (self.dLat == 0 and self.dLng == 0) or self.dist < self.speed:
self.api.set_position(self.destLat, self.destLng, 0)
Expand Down