class ThingBase:
type_ = '?'
- def __init__(self, world, id_, position=[0,0]):
+ def __init__(self, world, id_=None, position=[0,0]):
self.world = world
- self.id_ = id_
self.position = position
+ if id_ is None:
+ self.id_ = self.world.new_thing_id()
+ else:
+ self.id_ = id_
class Thing(ThingBase):
+ blocking = False
+ in_inventory = False
+
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self.inventory = []
+
+ def proceed(self):
+ pass
+
+
+
+class ThingItem(Thing):
+ type_ = 'item'
+
+
+
+class ThingAnimate(Thing):
+ blocking = True
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
stencil = self.get_stencil()
visible_things = []
for thing in self.world.things:
- if stencil[thing.position] == '.':
+ if (not thing.in_inventory) and stencil[thing.position] == '.':
visible_things += [thing]
return visible_things
-class ThingHuman(Thing):
+class ThingHuman(ThingAnimate):
type_ = 'human'
-class ThingMonster(Thing):
+class ThingMonster(ThingAnimate):
type_ = 'monster'