changeset 350:125cb389ab90

Hook up poster. Add cameras to crew_quarters and bridge
author Neil Muller <neil@dip.sun.ac.za>
date Sat, 28 Aug 2010 15:31:45 +0200
parents 0cc6ee8f2827
children 837728b3cbf4
files Resources/images/bridge/camera_small.png gamelib/scenes/bridge.py gamelib/scenes/crew_quarters.py gamelib/scenes/scene_widgets.py
diffstat 4 files changed, 63 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
Binary file Resources/images/bridge/camera_small.png has changed
--- a/gamelib/scenes/bridge.py	Sat Aug 28 15:26:30 2010 +0200
+++ b/gamelib/scenes/bridge.py	Sat Aug 28 15:31:45 2010 +0200
@@ -11,7 +11,8 @@
 
 from gamelib.scenes.scene_widgets import (Door, InteractText, InteractNoImage,
                                           InteractRectUnion, InteractImage,
-                                          InteractAnimated, GenericDescThing)
+                                          InteractAnimated, GenericDescThing,
+                                          BaseCamera)
 
 
 class Bridge(Scene):
@@ -42,6 +43,7 @@
         self.add_item(Superconductor('superconductor'))
         self.add_item(Stethoscope('stethoscope'))
         self.add_thing(ToMap())
+        self.add_thing(MonitorCamera())
         self.add_thing(MassageChair())
         self.add_thing(MassageChairBase())
         self.add_thing(StethoscopeThing())
@@ -352,6 +354,16 @@
         return Result(soundfile='beep550.ogg')
 
 
+class MonitorCamera(BaseCamera):
+    "A camera on the bridge"
+
+    NAME = "bridge.camera"
+
+    INTERACTS = {
+            'camera' : InteractImage(33, 192, 'camera_small.png')
+            }
+
+
 class BridgeCompDetail(Scene):
 
     FOLDER = 'bridge'
--- a/gamelib/scenes/crew_quarters.py	Sat Aug 28 15:26:30 2010 +0200
+++ b/gamelib/scenes/crew_quarters.py	Sat Aug 28 15:31:45 2010 +0200
@@ -4,7 +4,8 @@
 from gamelib.state import Scene, Item, Thing, Result
 from gamelib.scenes.scene_widgets import (Door, InteractText, InteractNoImage,
                                           InteractRectUnion, InteractImage,
-                                          InteractAnimated, GenericDescThing)
+                                          InteractAnimated, GenericDescThing,
+                                          BaseCamera)
 
 class CrewQuarters(Scene):
 
@@ -25,6 +26,9 @@
         self.add_thing(Safe())
         self.add_item(Fishbowl('fishbowl'))
         self.add_item(DuctTape('duct_tape'))
+        self.add_item(EscherPoster('escher_poster'))
+        self.add_thing(PosterThing())
+        self.add_thing(MonitorCamera())
         self.add_thing(GenericDescThing('crew.plant', 1,
             "The plant is doing surprisingly well for centuries of neglect",
             ((624, 215, 61, 108),)))
@@ -149,17 +153,42 @@
     CURSOR = CursorSprite('duct_tape.png')
 
 
-class SafeDetail(Scene):
+class MonitorCamera(BaseCamera):
+    "A Camera pointing to JIM"
+
+    NAME = 'crew.camera'
+
+    INTERACTS = {
+            'camera' : InteractImage(85, 97, 'camera_medium.png')
+            }
+
+
+class PosterThing(Thing):
+    "A innocent poster on the wall"
+
+    NAME = 'crew.poster'
 
-    FOLDER = 'crew_quarters'
-    BACKGROUND = None # TODO
-    NAME = 'safe_detail'
+    INTERACTS = {
+        'poster': InteractImage(29, 166, 'triangle_poster.png'),
+    }
+
+    INITIAL = 'poster'
+
+    def interact_without(self):
+        self.state.add_inventory_item('escher_poster')
+        self.scene.remove_thing(self)
+        return Result("This poster will go nicely on your bedroom wall.")
 
-    SIZE = (300, 300)
+    def get_description(self):
+        return "A paradoxial poster hanges below the security camera"
+
 
-    def __init__(self, state):
-        super(SafeDetail, self).__init__(state)
+class EscherPoster(Item):
+    "A confusing poster to disable JIM"
+
+    INVENTORY_IMAGE = "triangle_poster.png"
+    CURSOR = CursorSprite('triangle_poster.png')
+    NAME = "escher_poster"
 
 
 SCENES = [CrewQuarters]
-DETAIL_VIEWS = [SafeDetail]
--- a/gamelib/scenes/scene_widgets.py	Sat Aug 28 15:26:30 2010 +0200
+++ b/gamelib/scenes/scene_widgets.py	Sat Aug 28 15:31:45 2010 +0200
@@ -177,3 +177,15 @@
             "Waving that in the doorway does nothing. Try something else, perhaps?",
             ]))
 
+class BaseCamera(Thing):
+   "Base class for the camera puzzles"
+
+   INITIAL = 'camera'
+
+   def get_description(self):
+       return "A security camera watches over the room"
+
+   def interact_with_escher_poster(self, item):
+       # TODO
+       return Result("A very bad idea")
+