diff gamelib/scenes/mess.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 f703bdce8c9e
children a8510f4e2ea1 43b49f1de828
line wrap: on
line diff
--- a/gamelib/scenes/mess.py	Sat Jan 26 12:56:21 2013 +0200
+++ b/gamelib/scenes/mess.py	Sat Jan 26 13:00:31 2013 +0200
@@ -126,6 +126,9 @@
         'cans_available': 3,
     }
 
+    def select_interact(self):
+        return '%icans' % (self.get_data('cans_available'),)
+
     def interact_without(self):
         starting_cans = self.get_data('cans_available')
         if starting_cans > 0:
@@ -133,7 +136,7 @@
             self.game.add_item(can)
             self.game.add_inventory_item(can.name)
             self.set_data('cans_available', starting_cans - 1)
-            self.set_interact('%icans' % (starting_cans - 1))
+            self.set_interact()
             if starting_cans == 1:
                 self.scene.remove_thing(self)
             return Result({
@@ -178,10 +181,13 @@
         else:
             return "Your fix looks like it's holding up well."
 
+    def select_interact(self):
+        return self.get_data('status')
+
     def interact_with_machete(self, item):
         if self.get_data("status") == "blocked":
             self.set_data("status", "broken")
-            self.set_interact("broken")
+            self.set_interact()
             return Result("With a flurry of disgusting mutant vegetable "
                           "chunks, you clear the overgrown broccoli away from "
                           "the access panel and reveal some broken tubes. "
@@ -201,7 +207,7 @@
         else:
             self.game.remove_inventory_item(item.name)
             self.set_data('status', 'replaced')
-            self.set_interact("replaced")
+            self.set_interact()
             self.scene.set_data('life support status', 'replaced')
             return Result("The pipes slot neatly into place, but don't make"
                           " an airtight seal. One of the pipes has cracked"
@@ -215,7 +221,7 @@
         else:
             self.set_data("fixed", True)
             self.set_data("status", "fixed")
-            self.set_interact("fixed")
+            self.set_interact()
             self.scene.set_data('life support status', 'fixed')
             return Result("It takes quite a lot of tape, but eventually"
                           "everything is airtight and ready to hold pressure."
@@ -263,13 +269,13 @@
         if self.get_data('anim_pos') > -1:
             self.current_interact.animate()
             if self.get_data('anim_pos') > self.current_interact._anim_pos:
-                self.set_interact('no_snake')
+                self._set_interact('no_snake')
                 self.set_data('anim_pos', -1)
             else:
                 self.set_data('anim_pos', self.current_interact._anim_pos)
             return True
         if randint(0, 30 * self.game.gd.constants.frame_rate) == 0:
-            self.set_interact('snake')
+            self._set_interact('snake')
             self.set_data('anim_pos', 0)
             hiss.play()
         return False
@@ -291,11 +297,16 @@
         'taken': False,
     }
 
+    def select_interact(self):
+        if self.get_data('taken'):
+            return 'taken'
+        return self.INITIAL
+
     def interact_without(self):
         if self.get_data('taken'):
             return Result("The remaining bottles leak.")
         self.set_data('taken', True)
-        self.set_interact('taken')
+        self.set_interact()
         self.game.add_inventory_item('detergent_bottle')
         return Result("You pick up an empty dishwashing liquid bottle. You"
                       " can't find any sponges.")