changeset 77:64c1e6599e37

items are now things
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Sat, 04 Jan 2014 14:26:31 +0100
parents ee5acbf5df18
children 3378cbc5b79c
files fujo/items.py fujo/level.py fujo/things.py
diffstat 3 files changed, 36 insertions(+), 57 deletions(-) [+]
line wrap: on
line diff
--- a/fujo/items.py	Sat Jan 04 13:59:00 2014 +0100
+++ b/fujo/items.py	Sat Jan 04 14:26:31 2014 +0100
@@ -4,13 +4,28 @@
 import random
 
 from . import window
-from . import saves
+from . import things
 
 
-class Item(saves.Saveable):
+class Item(things.Thing):
     action = "Use"
     looks = 1
-    kinds = {}
+    is_item = True
+
+    def __init__(self):
+        super(Item, self).__init__()
+        self.picked_up = False
+        self.dy = 0
+
+    def update(self, display):
+        if self.picked_up:
+            if self.dy == 0:
+                self.image = self.image.copy()
+            self.dy -= 1
+            self.rect.move_ip(0, self.dy)
+            self.image.set_alpha(255 + 50 * self.dy)
+            if self.dy < -4:
+                self.kill()
 
     def get_name(self):
         return self.name
--- a/fujo/level.py	Sat Jan 04 13:59:00 2014 +0100
+++ b/fujo/level.py	Sat Jan 04 14:26:31 2014 +0100
@@ -118,7 +118,7 @@
             mob.item_picked(self, thing)
         del self.things[thing.pos]
         thing.picked_up = True
-        return thing.item()
+        return thing
 
     def populate(self):
         self.empty = []
@@ -135,26 +135,26 @@
             boss = mobs.Boss()
             self.place_mob(boss, self.empty.pop())
             for i in xrange(2):
-                kind = random.choice(items.FOOD)
-                self.place_thing(things.Item(kind), self.empty.pop())
+                item = random.choice(items.FOOD)()
+                self.place_thing(item, self.empty.pop())
             for i in xrange(4):
-                kind = random.choice(items.WEAPONS)
-                self.place_thing(things.Item(kind), self.empty.pop())
+                item = random.choice(items.WEAPONS)()
+                self.place_thing(item, self.empty.pop())
             for i in xrange(2):
-                kind = random.choice(items.ARMOR)
-                self.place_thing(things.Item(kind), self.empty.pop())
+                item = random.choice(items.ARMOR)()
+                self.place_thing(item, self.empty.pop())
         else:
             self.place_thing(things.Ladder(), self.empty.pop())
             for i in xrange(3 + 5 * self.depth):
                 Monster = random.choice(monsters)
                 self.place_mob(Monster(), self.empty.pop())
             for i in xrange(10 - 2 * self.depth):
-                kind = random.choice(items.ITEMS)
-                self.place_thing(things.Item(kind), self.empty.pop())
+                item = random.choice(items.ITEMS)()
+                self.place_thing(item, self.empty.pop())
             for i in xrange(2):
                 # Guaranteed food.
-                kind = random.choice(items.FOOD)
-                self.place_thing(things.Item(kind), self.empty.pop())
+                item = random.choice(items.FOOD)()
+                self.place_thing(item, self.empty.pop())
         for i in xrange(12):
             self.place_thing(random.choice(things.DEBRIS)(), self.empty.pop())
 
--- a/fujo/things.py	Sat Jan 04 13:59:00 2014 +0100
+++ b/fujo/things.py	Sat Jan 04 14:26:31 2014 +0100
@@ -7,7 +7,6 @@
 
 from .resources import RES
 from . import saves
-from . import items
 
 
 class Shadow(pygame.sprite.Sprite):
@@ -36,7 +35,7 @@
 
     def __init__(self):
         super(Thing, self).__init__()
-        self.image = RES.things[self.frame]
+        self.image = RES.things[self.looks]
         self.rect = self.image.get_rect()
         self.pos = None
 
@@ -58,68 +57,33 @@
 
 
 @Thing.register
-class Item(Thing):
-    frame = 1
-    is_item = True
-
-    def __init__(self, item=None):
-        if item is not None:
-            self.item = item
-            self.frame = item.looks
-        self.picked_up = False
-        self.dy = 0
-        super(Item, self).__init__()
-
-    def update(self, display):
-        if self.picked_up:
-            if self.dy == 0:
-                self.image = self.image.copy()
-            self.dy -= 1
-            self.rect.move_ip(0, self.dy)
-            self.image.set_alpha(255 + 50 * self.dy)
-            if self.dy < -4:
-                self.kill()
-
-    def save(self):
-        data = super(Item, self).save()
-        data['item'] = self.item.__name__
-        return data
-
-    def load(self, data):
-        super(Item, self).load(data)
-        self.item = items.Item.kinds[data['item']]
-        self.frame = self.item.looks
-        self.image = RES.things[self.frame]
-
-
-@Thing.register
 class Ladder(Thing):
-    frame = 2
+    looks = 2
     is_exit = True
 
 @Thing.register
 class Hole(Thing):
-    frame = 3
+    looks = 3
 
 
 @Thing.register
 class SmallBush(Thing):
-    frame = 4
+    looks = 4
 
 
 @Thing.register
 class Bush(Thing):
-    frame = 5
+    looks = 5
 
 
 @Thing.register
 class Rocks(Thing):
-    frame = 6
+    looks = 6
 
 
 @Thing.register
 class Stones(Thing):
-    frame = 7
+    looks = 7
 
 
 DEBRIS = [Bush, SmallBush, Rocks, Stones]