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