changeset 464:54853e61b149

Blinken cameras
author Stefano Rivera <stefano@rivera.za.net>
date Sun, 29 Aug 2010 01:29:24 +0200
parents 8d25de1519db
children 03dcb25d8370
files gamelib/scenes/bridge.py gamelib/scenes/crew_quarters.py gamelib/scenes/scene_widgets.py
diffstat 3 files changed, 34 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/gamelib/scenes/bridge.py	Sun Aug 29 01:26:12 2010 +0200
+++ b/gamelib/scenes/bridge.py	Sun Aug 29 01:29:24 2010 +0200
@@ -512,8 +512,12 @@
     NAME = "bridge.camera"
 
     INTERACTS = {
-            'camera' : InteractImage(33, 192, 'camera_small.png')
-            }
+        'online': InteractImage(33, 192, 'camera_small.png'),
+        'dead': InteractImage(33, 192, 'camera_small_gray.png'),
+        'looping': InteractAnimated(33, 192, ('camera_small.png',
+                                              'camera_small_gray.png'),
+                                    15),
+    }
 
 
 class BridgeCompDetail(Scene):
--- a/gamelib/scenes/crew_quarters.py	Sun Aug 29 01:26:12 2010 +0200
+++ b/gamelib/scenes/crew_quarters.py	Sun Aug 29 01:29:24 2010 +0200
@@ -163,8 +163,12 @@
     NAME = 'crew.camera'
 
     INTERACTS = {
-            'camera' : InteractImage(85, 97, 'camera_medium.png')
-            }
+        'online' : InteractImage(85, 97, 'camera_medium.png'),
+        'dead': InteractImage(85, 97, 'camera_medium_gray.png'),
+        'looping': InteractAnimated(85, 97, ('camera_medium.png',
+                                             'camera_medium_gray.png'),
+                                    15),
+    }
 
 
 class PosterThing(Thing):
--- a/gamelib/scenes/scene_widgets.py	Sun Aug 29 01:26:12 2010 +0200
+++ b/gamelib/scenes/scene_widgets.py	Sun Aug 29 01:29:24 2010 +0200
@@ -183,17 +183,26 @@
 
 
 class BaseCamera(Thing):
-   "Base class for the camera puzzles"
-
-   INITIAL = 'camera'
-
-   def get_description(self):
-       return "A security camera watches over the room"
+    "Base class for the camera puzzles"
+ 
+    INITIAL = 'online'
+    INITIAL_DATA = {
+         'state': 'online',
+    }
+ 
+    def get_description(self):
+        return "A security camera watches over the room"
+ 
+    def interact_with_escher_poster(self, item):
+        # Order matters here, because of helper function
+        ai_response = make_jim_dialog("3D scene reconstruction failed. Critical error. Entering emergency shutdown.", self.state)
+        self.state.scenes['bridge'].set_data('ai status', 'looping')
+        return ai_response
+ 
+    def animate(self):
+        ai_status = self.state.scenes['bridge'].get_data('ai status')
+        if ai_status != self.get_data('status'):
+            self.set_data('status', ai_status)
+            self.set_interact(ai_status)
+        super(BaseCamera, self).animate()
 
-   def interact_with_escher_poster(self, item):
-       # Order matters here, because of helper function
-       ai_response = make_jim_dialog("3D scene reconstruction failed. Critical error. Entering emergency shutdown.", self.state)
-       self.state.scenes['bridge'].set_data('ai status', 'looping')
-       return ai_response
-
-