changeset 533:7addf41b6abb

Allow backtracking on ladders
author Neil Muller <drnlmuller@gmail.com>
date Fri, 27 Nov 2009 22:09:54 +0000
parents 0667189a5973
children d16ed2a8a33e
files gamelib/animal.py
diffstat 1 files changed, 9 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/gamelib/animal.py	Fri Nov 27 21:28:20 2009 +0000
+++ b/gamelib/animal.py	Fri Nov 27 22:09:54 2009 +0000
@@ -518,13 +518,19 @@
             else:
                 # Been bounced off the path
                 self.path = []
+        new_pos = None
         if self.target.z < self.pos.z:
             # We need to try heading down.
-            return Position(self.pos.x, self.pos.y, self.pos.z - 1)
+            new_pos = Position(self.pos.x, self.pos.y, self.pos.z - 1)
         if self.target.x == self.pos.x and self.target.y == self.pos.y and \
                 self.target.z > self.pos.z:
             # We try heading up
-            return Position(self.pos.x, self.pos.y, self.pos.z + 1)
+            new_pos = Position(self.pos.x, self.pos.y, self.pos.z + 1)
+        if new_pos:
+            if new_pos in self._last_steps:
+                # ladder, so we allow backtracking
+                self._last_steps.remove(new_pos)
+            return new_pos
         cur_dist = self.target.dist(self.pos)
         if cur_dist < 2:
             # We're right ontop of our target, so just go there
@@ -688,8 +694,7 @@
                 # We've dug through the fence, so make a hole
                 self._make_hole()
             return
-        else:
-            desired_pos = self._calc_next_move()
+        desired_pos = self._calc_next_move()
         final_pos = self._update_pos(desired_pos)
         self._fix_face(final_pos)
         self.pos = final_pos