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