diff gamelib/scenes/mess.py @ 816:eed75a1d50c4 pyntnclick

Better Item handling.
author Jeremy Thurgood <firxen@gmail.com>
date Sun, 27 Jan 2013 22:19:39 +0200
parents 374d96e0b55e
children
line wrap: on
line diff
--- a/gamelib/scenes/mess.py	Sun Jan 27 22:09:34 2013 +0200
+++ b/gamelib/scenes/mess.py	Sun Jan 27 22:19:39 2013 +0200
@@ -28,7 +28,10 @@
         self.add_thing(ToMap())
         self.add_thing(DetergentThing())
         self.add_thing(Boomslang())
-        self.add_item(DetergentBottle('detergent_bottle'))
+        self.add_item_factory(DetergentBottle)
+        self.add_item_factory(EmptyCan)
+        self.add_item_factory(FullCan)
+        self.add_item_factory(DentedCan)
         # Flavour items
         # extra cans on shelf
         self.add_thing(GenericDescThing('mess.cans', 1,
@@ -48,6 +51,8 @@
 class BaseCan(CloneableItem):
     """Base class for the cans"""
 
+    MAX_COUNT = 3
+
     def interact_with_full_can(self, item):
         return Result(_("You bang the cans together. It sounds like two"
                         " cans being banged together."),
@@ -63,9 +68,7 @@
         return Result(_("You'd mangle it beyond usefulness."))
 
     def interact_with_canopener(self, item):
-        empty = EmptyCan('empty_can')
-        self.game.add_item(empty)
-        self.game.replace_inventory_item(self.name, empty.name)
+        self.game.replace_inventory_item(self.name, 'empty_can')
         return Result(_("You open both ends of the can, discarding the"
                         " hideous contents."))
 
@@ -73,6 +76,7 @@
 class EmptyCan(BaseCan):
     "After emptying the full can."
 
+    NAME = 'empty_can'
     INVENTORY_IMAGE = "empty_can.png"
     CURSOR = CursorSprite('empty_can_cursor.png')
 
@@ -87,13 +91,12 @@
 class FullCan(BaseCan):
     "Found on the shelf."
 
+    NAME = 'full_can'
     INVENTORY_IMAGE = "full_can.png"
     CURSOR = CursorSprite('full_can_cursor.png')
 
     def interact_with_titanium_leg(self, item):
-        dented = DentedCan("dented_can")
-        self.game.add_item(dented)
-        self.game.replace_inventory_item(self.name, dented.name)
+        self.game.replace_inventory_item(self.name, 'dented_can')
         return Result(_("You club the can with the femur. The can gets dented,"
                         " but doesn't open."), soundfile="can_hit.ogg")
 
@@ -101,6 +104,7 @@
 class DentedCan(BaseCan):
     "A can banged on with the femur"
 
+    NAME = 'dented_can'
     INVENTORY_IMAGE = "dented_can.png"
     CURSOR = CursorSprite('dented_can_cursor.png')
 
@@ -136,9 +140,7 @@
     def interact_without(self):
         starting_cans = self.get_data('cans_available')
         if starting_cans > 0:
-            can = FullCan("full_can")
-            self.game.add_item(can)
-            self.game.add_inventory_item(can.name)
+            self.game.add_inventory_item('full_can')
             self.set_data('cans_available', starting_cans - 1)
             self.set_interact()
             if starting_cans == 1:
@@ -324,6 +326,7 @@
 
 
 class DetergentBottle(Item):
+    NAME = 'detergent_bottle'
     INVENTORY_IMAGE = 'bottle_empty.png'
     CURSOR = CursorSprite('bottle_empty_cursor.png', 27, 7)