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