# HG changeset patch # User Neil Muller # Date 1302377728 -7200 # Node ID 9e85c30dd12fec8b4065209b10b890d64f4efeb5 # Parent 14cab059bf398afc9daf35e83e49fe803a146d87 Animate signal fire diff -r 14cab059bf39 -r 9e85c30dd12f skaapsteker/sprites/items.py --- a/skaapsteker/sprites/items.py Sat Apr 09 21:29:13 2011 +0200 +++ b/skaapsteker/sprites/items.py Sat Apr 09 21:35:28 2011 +0200 @@ -1,6 +1,8 @@ -from .. import engine +from .. import engine, data from .base import Item, PC_LAYER, PROJECTILE_LAYER +import time + def notify(text): @@ -139,8 +141,18 @@ class SignalFire(Item): image_file = 'props/signal_fire/signal_fire_unlit.png' + animation_files = ['props/signal_fire/signal_fire_lit01.png', + 'props/signal_fire/signal_fire_lit02.png', + 'props/signal_fire/signal_fire_lit03.png', + 'props/signal_fire/signal_fire_lit04.png'] + + wants_updates = True + def setup(self, litness, **opts): super(SignalFire, self).setup(**opts) + self._last_time = None + self._frame = 0 + self.animations = [data.load_image(self.image_dir + x) for x in self.animation_files] def player_action(self, player): @@ -164,6 +176,22 @@ self._me.litness = 'burning' self.world.missions.fire_started_on_road = True + def update(self): + if self._me.litness != 'burning': + return + if self._last_time is None: + self._last_time = time.time() + return + if time.time() - self._last_time > 0.1: + self._last_time = time.time() + self._frame += 1 + if self._frame >= len(self.animations): + self._frame = 0 + pos = self.rect.midbottom + self.image = self.animations[self._frame] + self.rect = self.image.get_rect(midbottom=pos) + self.collide_rect = self.rect.move(0, 0) + ################################################## # Cannon destruction