Mercurial > skaapsteker
changeset 355:5bdb4677510a
Have fireballs appear in the right place.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Sat, 09 Apr 2011 14:02:13 +0200 |
parents | b37dbc557ae0 |
children | f5148f70ca84 |
files | skaapsteker/sprites/base.py skaapsteker/sprites/player.py skaapsteker/sprites/projectiles.py |
diffstat | 3 files changed, 23 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/skaapsteker/sprites/base.py Sat Apr 09 14:01:32 2011 +0200 +++ b/skaapsteker/sprites/base.py Sat Apr 09 14:02:13 2011 +0200 @@ -89,7 +89,10 @@ self._animations[name].append((img, collide_rect)) self.collide_rect = Rect((0, 0), (2, 2)) - self.collide_rect.midbottom = (pos[0]*TILE_SIZE[0]+TILE_SIZE[0]/2, (pos[1]+1)*TILE_SIZE[1]) + if isinstance(pos, pygame.Rect): + self.collide_rect.midbottom = pos.midbottom + else: + self.collide_rect.midbottom = (pos[0]*TILE_SIZE[0]+TILE_SIZE[0]/2, (pos[1]+1)*TILE_SIZE[1]) self._update_image() self.setup(**opts)
--- a/skaapsteker/sprites/player.py Sat Apr 09 14:01:32 2011 +0200 +++ b/skaapsteker/sprites/player.py Sat Apr 09 14:02:13 2011 +0200 @@ -273,8 +273,11 @@ print 'ninja fireball attack attack attack' self.attacking = 2 self._last_time = time.time() # Reset the animation clock - fireball = Fireball(self.get_tile_pos()) - fireball.facing = self.facing + if self.facing == 'left': + pos = pygame.Rect(self.rect.midleft, (0, 0)) + else: + pos = pygame.Rect(self.rect.midright, (0, 0)) + fireball = Fireball(pos, direction=self.facing) AddSpriteEvent.post(fireball) def _lightning_attack(self): @@ -369,6 +372,9 @@ def get_tile_pos(self): return [a/b for a, b in zip(self.rect.center, TILE_SIZE)] + def get_tile_for_pos(self, pos): + return [a/b for a, b in zip(pos, TILE_SIZE)] + def get_sprite(self, set_level): my_item = self._me.item if my_item is None:
--- a/skaapsteker/sprites/projectiles.py Sat Apr 09 14:01:32 2011 +0200 +++ b/skaapsteker/sprites/projectiles.py Sat Apr 09 14:02:13 2011 +0200 @@ -19,6 +19,17 @@ ('right', lambda x: transform.flip(x, True, False))), } + FIREBALL_WIDTH = 60 # pixels + + def setup(self, direction): + self.facing = direction + if self.facing == "left": + shift = (-self.FIREBALL_WIDTH / 2, 0) + else: + shift = (self.FIREBALL_WIDTH / 2, 0) + self.rect.move_ip(shift) + self.collide_rect.move_ip(shift) + def collided_player(self, player): print "%s went boom with player" % self