Mercurial > skaapsteker
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