Mercurial > mhrok
changeset 48:f0697a2de62a
Blood splashes
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Sun, 11 Mar 2012 00:27:27 +0100 |
| parents | abb35c96b871 |
| children | acbd199a7923 |
| files | mhrok/display.py mhrok/level.py mhrok/mhrok.png mhrok/sprites.py |
| diffstat | 4 files changed, 25 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/mhrok/display.py Sat Mar 10 18:10:11 2012 +0100 +++ b/mhrok/display.py Sun Mar 11 00:27:27 2012 +0100 @@ -86,9 +86,13 @@ def on_mob_dust(self, mob, amount=4, delay=0): for i in xrange(amount): x = mob.sprite.rect.centerx + random.randint(-8, 8) - y = mob.sprite.rect.centery + random.randint(-2, 2) + y = mob.sprite.rect.centery + random.randint(-3, 3) self.sprites.add(sprites.Dust( - self.tiles, (x, y), delay + random.randint(0, 4))) + self.tiles, (x, y), min(0, delay + random.randint(0, 4)))) + + def on_mob_blood(self, mob, delay=0): + self.sprites.add(sprites.Blood( + self.tiles, mob.sprite.rect.center, delay)) def on_room_light(self, room): self.light_room(room)
--- a/mhrok/level.py Sat Mar 10 18:10:11 2012 +0100 +++ b/mhrok/level.py Sun Mar 11 00:27:27 2012 +0100 @@ -55,15 +55,17 @@ raise self.BlockedWall() mob.pos = target self.events.append(('mob_walk', mob, direction)) + self.events.append(('mob_dust', mob, 1, -4)) def kill(self, mob): self.mobs.remove(mob) + self.events.append(('mob_blood', mob, 0)) self.events.append(('mob_death', mob)) def open(self, mob): self.mobs.remove(mob) self.events.append(('mob_open', mob)) - self.events.append(('mob_dust', mob, 20, 4)) + self.events.append(('mob_dust', mob, 10, 4)) def stand(self, mob, direction, dust=False): if direction is None: @@ -78,7 +80,7 @@ def attack(self, mob, direction, other): other.hit(self, mob) self.events.append(('mob_attack', mob, direction, other)) - self.events.append(('mob_dust', mob, 4)) + self.events.append(('mob_dust', mob, 4, -2)) def is_blocked(self, pos): for m in self.mobs:
--- a/mhrok/sprites.py Sat Mar 10 18:10:11 2012 +0100 +++ b/mhrok/sprites.py Sun Mar 11 00:27:27 2012 +0100 @@ -36,14 +36,14 @@ self.depth = self.rect.bottom def death_animation(self): - for step in range(3): + for step in range(5): yield None image = self.image.copy() for step in range(8): yield None image.set_alpha(192-step*32) self.image = image - self.rect.move_ip(0, -5) + self.rect.move_ip(0, -5 - step * 2) self.kill() def open_animation(self): @@ -178,29 +178,35 @@ self.rect.center = self.owner.rect.center class Dust(pygame.sprite.Sprite): + steps = [40, 41, 42, 43] + speed = 3 def __init__(self, frames, (x, y), delay=0): super(Dust, self).__init__() self.animation = self.dust_animation(frames, delay) - self.image = frames[40].copy() + self.image = frames[self.steps[0]].copy() self.image.set_alpha(0) self.rect = self.image.get_rect() self.rect.center = (x, y) - self.depth = y - for step, frame in enumerate([40, 41, 42, 43]): + self.depth = self.rect.bottom + 2 + for step, frame in enumerate(self.steps): frames[frame].set_alpha(192 - 32 * step) def dust_animation(self, frames, delay): for step in xrange(delay): yield None - for frame in [40, 41, 42, 43]: + for frame in self.steps: self.image = frames[frame] - yield None - yield None - yield None + for step in range(self.speed): + yield None def update(self): try: self.animation.next() except StopIteration: self.kill() + +class Blood(Dust): + steps = [45, 46, 47, 48] + speed = 1 +
