changeset 474:9e85c30dd12f

Animate signal fire
author Neil Muller <drnlmuller@gmail.com>
date Sat, 09 Apr 2011 21:35:28 +0200
parents 14cab059bf39
children 18427edff33a
files skaapsteker/sprites/items.py
diffstat 1 files changed, 29 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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