+ blocking = False
+ in_inventory = False
+
+ def __init__(self, *args, **kwargs):
+ self.inventory = []
+ self._radius = 8
+ super().__init__(*args, **kwargs)
+
+ def proceed(self):
+ pass
+
+ def _position_set(self, pos):
+ super()._position_set(pos)
+ for t_id in self.inventory:
+ t = self.world.get_thing(t_id)
+ t.position = self.position
+ if not self.id_ == self.world.player_id:
+ return
+ edge_left = self.position[1].x - self._radius
+ edge_right = self.position[1].x + self._radius
+ edge_up = self.position[1].y - self._radius
+ edge_down = self.position[1].y + self._radius
+ if edge_left < 0:
+ self.world.get_map(self.position[0] + YX(1,-1))
+ self.world.get_map(self.position[0] + YX(0,-1))
+ self.world.get_map(self.position[0] + YX(-1,-1))
+ if edge_right >= self.world.game.map_size.x:
+ self.world.get_map(self.position[0] + YX(1,1))
+ self.world.get_map(self.position[0] + YX(0,1))
+ self.world.get_map(self.position[0] + YX(-1,1))
+ if edge_up < 0:
+ self.world.get_map(self.position[0] + YX(-1,1))
+ self.world.get_map(self.position[0] + YX(-1,0))
+ self.world.get_map(self.position[0] + YX(-1,-1))
+ if edge_down >= self.world.game.map_size.y:
+ self.world.get_map(self.position[0] + YX(1,1))
+ self.world.get_map(self.position[0] + YX(1,0))
+ self.world.get_map(self.position[0] + YX(1,-1))
+
+
+
+class ThingItem(Thing):
+ pass
+
+
+
+class ThingFood(ThingItem):
+ type_ = 'food'
+
+
+
+class ThingAnimate(Thing):
+ blocking = True