# HG changeset patch # User Stefano Rivera # Date 1283038164 -7200 # Node ID 54853e61b149c226a6b5fb182e1c84ad20e423c0 # Parent 8d25de1519db2ac7cf0f3f4c442b1b3165fa6313 Blinken cameras diff -r 8d25de1519db -r 54853e61b149 gamelib/scenes/bridge.py --- 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): diff -r 8d25de1519db -r 54853e61b149 gamelib/scenes/crew_quarters.py --- 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): diff -r 8d25de1519db -r 54853e61b149 gamelib/scenes/scene_widgets.py --- 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 - -