diff skaapsteker/sprites/player.py @ 172:bf144d817113

if year in range(1980, 1990): continue # how can we sleep while the kitsune is stuck to the floor?
author Simon Cross <hodgestar@gmail.com>
date Wed, 06 Apr 2011 01:35:20 +0200
parents f7fb2ee24c70
children 57a78f19c673
line wrap: on
line diff
--- a/skaapsteker/sprites/player.py	Wed Apr 06 01:04:43 2011 +0200
+++ b/skaapsteker/sprites/player.py	Wed Apr 06 01:35:20 2011 +0200
@@ -22,7 +22,6 @@
         self.rect = None
         self._image_dict = {}
         self._animation_frame = 0.0
-        self._recent_collisions = []
         self._last_time = time.time()
         # State flags and such
         self.running = False
@@ -45,19 +44,21 @@
             cur_pos = self.collide_rect.midbottom
         else:
             cur_pos = (0, 0)
+
+        # TODO: can save a lot of calculation here by caching collision rects
         cand_image = images[int(self._animation_frame)]
-        cand_collide_rect = cand_image.get_bounding_rect(1)
+        cand_collide_rect = cand_image.get_bounding_rect(1).inflate(-2,-2)
+        cand_rect = cand_image.get_rect()
+        cand_rect_offset = cand_rect.centerx - cand_collide_rect.centerx, cand_rect.bottom - cand_collide_rect.bottom
+        cand_rect.midbottom = cur_pos[0] + cand_rect_offset[0], cur_pos[1] + cand_rect_offset[1]
         cand_collide_rect.midbottom = cur_pos
-        if cand_collide_rect.collidelist(self._recent_collisions) != -1 \
-                and self.collide_rect.collidelist(self._recent_collisions) == -1:
-            # We introduce a new collision, so don't update the image
+        if not self.check_collide_rect(cand_collide_rect, cand_rect, cand_image):
             return
-        self.image = images[int(self._animation_frame)]
-        self.collide_rect = self.image.get_bounding_rect(1)
-        self.rect = self.image.get_rect()
-        self.rect_offset = self.rect.centerx - self.collide_rect.centerx, self.rect.bottom - self.collide_rect.bottom
-        self.collide_rect.midbottom = cur_pos
-        self.rect.midbottom = cur_pos[0] + self.rect_offset[0], cur_pos[1] + self.rect_offset[1]
+
+        self.image = cand_image
+        self.collide_rect = cand_collide_rect
+        self.rect = cand_rect
+        self.rect_offset = cand_rect_offset
         self.init_pos()
 
     def update(self):
@@ -89,9 +90,7 @@
         self.facing = new_facing
 
     def collided(self, other):
-        self._recent_collisions.append(other.collide_rect)
-        while len(self._recent_collisions) > 10:
-            self._recent_collisions.pop(0)
+        pass
 
     def set_pos(self, pos):
         self.starting_tile_pos = pos