diff gamelib/scenes/engine.py @ 759:386475464202 pyntnclick

Inspect game state for Thing.set_interact() instead of setting it manually everywhere.
author Jeremy Thurgood <firxen@gmail.com>
date Sat, 26 Jan 2013 13:00:31 +0200
parents 2f74064bc779
children a8510f4e2ea1 43b49f1de828
line wrap: on
line diff
--- a/gamelib/scenes/engine.py	Sat Jan 26 12:56:21 2013 +0200
+++ b/gamelib/scenes/engine.py	Sat Jan 26 13:00:31 2013 +0200
@@ -207,6 +207,13 @@
         else:
             return "A working superconductor."
 
+    def select_interact(self):
+        if not self.get_data('present'):
+            return 'removed'
+        if self.get_data('working'):
+            return 'fixed'
+        return self.INITIAL
+
     def interact_without(self):
         if self.get_data('present') and not self.get_data('working'):
             return Result("It's wedged in there pretty firmly, it won't"
@@ -217,8 +224,8 @@
 
     def interact_with_machete(self, item):
         if self.get_data('present') and not self.get_data('working'):
-            self.set_interact('removed')
             self.set_data('present', False)
+            self.set_interact()
             return Result("With leverage, the burned-out superconductor"
                           " snaps out. You discard it.")
 
@@ -234,9 +241,9 @@
 
     def interact_with_taped_superconductor(self, item):
         if not self.get_data('present'):
-            self.set_interact('fixed')
             self.set_data('present', True)
             self.set_data('working', True)
+            self.set_interact()
             self.game.remove_inventory_item(item.name)
             results = [Result("The chair's superconductor looks over-specced "
                               "for this job, but it should work.")]
@@ -261,6 +268,11 @@
         'filled': False,
     }
 
+    def select_interact(self):
+        if self.get_data('filled'):
+            return 'full'
+        return self.INITIAL
+
     def get_description(self):
         if not self.get_data('filled'):
             return "Those are coolant reservoirs. They look empty."
@@ -296,7 +308,7 @@
                     " container connected to a cracked pipe would be a waste.")
         self.game.remove_inventory_item(item.name)
         self.scene.things['engine.cryo_containers'].set_data('filled', True)
-        self.scene.things['engine.cryo_containers'].set_interact('full')
+        self.scene.things['engine.cryo_containers'].set_interact()
         results = [Result("You fill the reservoirs. "
                           "The detergent bottle was just big enough, which "
                           "is handy, because it's sprung a leak.")]
@@ -489,13 +501,18 @@
             return "The pipe looks cracked and won't hold" \
                    " fluid until it's fixed."
 
+    def select_interact(self):
+        if self.get_data('fixed'):
+            return 'taped'
+        return self.INITIAL
+
     def interact_with_duct_tape(self, item):
         if self.get_data('fixed'):
             return Result("The duct tape already there appears to be "
                           "sufficient.")
         else:
             self.set_data('fixed', True)
-            self.set_interact('taped')
+            self.set_interact()
             return Result("You apply your trusty duct tape to the "
                           "creak, sealing it.")