From 2f132339a90ba73304ad07ca76333a945e9638f5 Mon Sep 17 00:00:00 2001 From: ben Date: Sun, 31 Jul 2016 19:09:09 +0200 Subject: [PATCH] StepWalker should throw an error if the distance asked is too big --- pokemongo_bot/cell_workers/utils.py | 8 ++++++++ pokemongo_bot/step_walker.py | 8 +++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/pokemongo_bot/cell_workers/utils.py b/pokemongo_bot/cell_workers/utils.py index 507ae19583..b1d48ea192 100644 --- a/pokemongo_bot/cell_workers/utils.py +++ b/pokemongo_bot/cell_workers/utils.py @@ -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 diff --git a/pokemongo_bot/step_walker.py b/pokemongo_bot/step_walker.py index 263699095d..78532e55aa 100644 --- a/pokemongo_bot/step_walker.py +++ b/pokemongo_bot/step_walker.py @@ -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 @@ -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)