changeset 29:411aeb9d42ba

gun switching
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Sat, 16 Mar 2013 08:27:37 +0100
parents d7fdc73a70b4
children 072f93dc8b7c
files fhrl/mobs.py
diffstat 1 files changed, 20 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/fhrl/mobs.py	Sat Mar 16 08:14:51 2013 +0100
+++ b/fhrl/mobs.py	Sat Mar 16 08:27:37 2013 +0100
@@ -226,6 +226,7 @@
         self.health = 10
         self.power = 1
         self.weapon = 0
+        self.last_dir = None
 
     def init_sprite(self, resources):
         self.set_image(resources.mobs[0])
@@ -241,13 +242,21 @@
             self.items.append(item.kind)
         return [item._pick_anim(display)]
 
-    def shoot(self, direction, level, display, weapon):
+    def shoot(self, direction, level, display):
+        weapon = self.items[self.weapon]
         x, y = self.x + DX[direction], self.y + DY[direction]
-        shoot = weapon.get('shoot')
-        if shoot:
-            return shoot((x, y), direction, level, display)
+        f = weapon.get('shoot')
+        if f:
+            return f((x, y), direction, level, display)
         return []
 
+    def _show_gun(self, display):
+        self.gun.set_image(display.resources.items[self.items[self.weapon]['sprite']])
+        self.gun.rect.center = self.rect.center
+        self.gun.depth = 10
+        self.gun.rect.center = self.rect.centerx - 4, self.rect.centery + 10
+        display.sprites.add(self.gun)
+
     def act(self, level, display):
         anims = []
         keys = pygame.key.get_pressed()
@@ -271,11 +280,13 @@
         elif keys[pygame.K_RIGHT]:
             direction = 1
         if keys[pygame.K_x]:
-            self.gun.set_image(display.resources.items[self.items[self.weapon]['sprite']])
-            self.gun.rect.center = self.rect.center
-            self.gun.depth = 10
-            self.gun.rect.center = self.rect.centerx - 4, self.rect.centery + 10
-            display.sprites.add(self.gun)
+            self._show_gun(display)
+        elif keys[pygame.K_z]:
+            if direction is None and self.last_dir is not None:
+                self.weapon = (self.weapon + DX[self.last_dir]) % len(self.items)
+            self.last_dir = direction
+            self._show_gun(display)
+            return anims
         else:
             self.gun.kill()
         if direction is None: