Mercurial > dw
changeset 23:64d63ec6ecaf
Refactoring of animations
| author | Radomir Dopieralski <moindev@sheep.art.pl> |
|---|---|
| date | Mon, 17 Dec 2007 19:18:43 +0100 |
| parents | 7b79f91b6c40 |
| children | ee5c35fa6e55 |
| files | monster/__init__.py monster/jello.py monster/player.py |
| diffstat | 3 files changed, 44 insertions(+), 33 deletions(-) [+] |
line wrap: on
line diff
--- a/monster/__init__.py Mon Dec 17 18:23:14 2007 +0100 +++ b/monster/__init__.py Mon Dec 17 19:18:43 2007 +0100 @@ -37,7 +37,6 @@ self.h = 0 self.place(pos) self.frames = read_frames(os.path.join("image", image_file)) - self.anim = self.frames[0] self.shadow = Shadow(self) self.level.add_sprite(self.level.creatures, self) self.shadow.update() @@ -66,17 +65,19 @@ self.x, self.y = pos self.level.monsters[pos] = self - def animate(self, delay=0): - '''Change the frame of animation''' - + def animate(self, frames, delay=0): if self.delay>=delay: self.delay = 0 self.frame += 1 - if self.frame>=len(self.anim): + if self.frame>=len(frames): self.frame = 0 else: self.delay += 1 - self.image = self.anim[self.frame] + self.image = frames[self.frame] + + + def anim(self): + self.animate(self.frames[0], 2) def die(self): try: @@ -84,6 +85,10 @@ except AttributeError: pass self.kill() + try: + del self.level.monsters[(self.x, self.y)] + except KeyError: + pass def update(self): - self.animate(3) + self.anim()
--- a/monster/jello.py Mon Dec 17 18:23:14 2007 +0100 +++ b/monster/jello.py Mon Dec 17 19:18:43 2007 +0100 @@ -6,6 +6,3 @@ class Mob(Monster): def __init__(self, pos, level): Monster.__init__(self, pos, level, "jello.png") - - def update(self): - self.animate(3)
--- a/monster/player.py Mon Dec 17 18:23:14 2007 +0100 +++ b/monster/player.py Mon Dec 17 19:18:43 2007 +0100 @@ -12,40 +12,49 @@ Monster.__init__(self, pos, level, "abi2.png") self.rotate(3) self.level.player = self + self.anim = self.anim_stand + + def anim_stand(self): + self.image = self.frames[self.facing-1][0] + + def anim_walk(self): + self.rect.move_ip(delta_x[self.facing]*3, delta_y[self.facing]*2) + self.z += delta_y[self.facing]*2 + self.animate(self.frames[self.facing-1], 1) + self.step -= 1 + if self.step<=0: + self.anim = self.anim_stand - + def anim_attack(self): + dx = delta_x[self.facing]*6 + dy = delta_y[self.facing]*4-1 + if self.step<=2: + dx = -dx + dy = -dy + self.h-=1 + else: + self.h+=1 + self.rect.move_ip(dx, dy) + self.animate(self.frames[self.facing-1], 1) + self.step -= 1 + if self.step<=0: + self.anim = self.anim_stand + + def update(self): - if self.step>0: - self.rect.move_ip(delta_x[self.facing]*3, delta_y[self.facing]*2) - self.z += delta_y[self.facing]*2 - self.step -= 1 - elif self.step<0: - dx = delta_x[self.facing]*6 - dy = delta_y[self.facing]*4-1 - if self.step>=-2: - dx = -dx - dy = -dy - self.h-=1 - else: - self.h+=1 - self.rect.move_ip(dx, dy) - self.step += 1 - else: - self.h = 0 - self.frame = 0 - self.animate(1) + self.anim() def rotate(self, facing): self.facing = facing - self.anim = self.frames[facing-1] def walk(self, direction): self.move((self.x+delta_x[direction],self.y+delta_y[direction])) self.rotate(direction) self.step = 8 + self.anim = self.anim_walk def attack(self, direction, monster): self.rotate(direction) - self.step = -4 + self.step = 4 + self.anim = self.anim_attack Mesg(monster, "miss", color=(255,255,0)) -
