changeset 16:14a80ae3b325

direction arrows
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Thu, 14 Mar 2013 09:54:37 +0100
parents 55ee23d91598
children 619b9b648e82
files fhrl/arrows.png fhrl/mobs.py fhrl/resources.py
diffstat 3 files changed, 38 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
Binary file fhrl/arrows.png has changed
--- a/fhrl/mobs.py	Thu Mar 14 00:05:36 2013 +0100
+++ b/fhrl/mobs.py	Thu Mar 14 09:54:37 2013 +0100
@@ -113,45 +113,56 @@
     def __init__(self, (x, y)):
         super(Hero, self).__init__(0, (x, y))
         self.items = []
+        self.arrow = Sprite()
+        self.dir = None
 
     def act(self, level, display):
         keys = pygame.key.get_pressed()
-        direction = None
         if keys[pygame.K_UP]:
             if keys[pygame.K_LEFT]:
-                direction = 4
+                self.dir = 4
             elif keys[pygame.K_RIGHT]:
-                direction = 5
+                self.dir = 5
             else:
-                direction = 0
+                self.dir = 0
         elif keys[pygame.K_DOWN]:
             if keys[pygame.K_LEFT]:
-                direction = 7
+                self.dir = 7
             elif keys[pygame.K_RIGHT]:
-                direction = 6
+                self.dir = 6
             else:
-                direction = 2
+                self.dir = 2
         elif keys[pygame.K_LEFT]:
-            direction = 3
+            self.dir = 3
         elif keys[pygame.K_RIGHT]:
-            direction = 1
-        if direction is not None:
-            try:
-                anims = [self.walk(direction, level)]
-                item = level.find_item((self.x, self.y))
-                if item:
-                    anims.append(item._pick_anim(display))
-                    self.items.append(item)
-                    level.items.remove(item)
-                return anims
-            except ActBumpStuff as e:
-                if e.stuff.kind in (4, 6):
-                    e.stuff.kind += 1
-                else:
-                    e.stuff.kind = 8
-                return [e.stuff._morph_anim(display)]
-            except ActException:
-                pass
+            self.dir = 1
+        else:
+            self.arrow.kill()
+            if self.dir is not None:
+                try:
+                    anims = [self.walk(self.dir, level)]
+                    item = level.find_item((self.x, self.y))
+                    if item:
+                        anims.append(item._pick_anim(display))
+                        self.items.append(item)
+                        level.items.remove(item)
+                    return anims
+                except ActBumpStuff as e:
+                    if e.stuff.kind in (4, 6):
+                        e.stuff.kind += 1
+                    else:
+                        e.stuff.kind = 8
+                    return [e.stuff._morph_anim(display)]
+                except ActException:
+                    pass
+                finally:
+                    self.dir = None
+        if self.dir is not None:
+            self.arrow.set_image(display.resources.arrows[self.dir])
+            self.arrow.rect.center = self.rect.center
+            self.arrow.depth = 1000
+            self.arrow.rect.move_ip(DX[self.dir] * 32, DY[self.dir] * 32)
+            display.sprites.add(self.arrow)
         return []
 
 
--- a/fhrl/resources.py	Thu Mar 14 00:05:36 2013 +0100
+++ b/fhrl/resources.py	Thu Mar 14 09:54:37 2013 +0100
@@ -11,6 +11,7 @@
         self.floor = self.load_atlas('rocks.png', 48, 32)
         self.mobs = self.load_atlas('mobs2.png', 48, 48)
         self.stuff = self.load_atlas('stuff.png', 48, 48)
+        self.arrows = self.load_atlas('arrows.png', 48, 48)
         self.items = self.load_atlas('items.png', 48, 32)
 
     @staticmethod