comparison gamelib/animal.py @ 195:9d31cfc3afde

refactor of layers drawn on chicken, to allow for extended functionality
author Adrianna Pińska <adrianna.pinska@gmail.com>
date Fri, 04 Sep 2009 19:26:02 +0000
parents 6854e706dcdf
children edcb5edfa0ff
comparison
equal deleted inserted replaced
194:5ec222ca07cd 195:9d31cfc3afde
26 if hasattr(tile_pos, 'to_tuple'): 26 if hasattr(tile_pos, 'to_tuple'):
27 self.pos = tile_pos 27 self.pos = tile_pos
28 else: 28 else:
29 self.pos = Position(tile_pos[0], tile_pos[1]) 29 self.pos = Position(tile_pos[0], tile_pos[1])
30 self.equipment = [] 30 self.equipment = []
31 self.accoutrements = []
31 self.abode = None 32 self.abode = None
32 self.facing = 'left' 33 self.facing = 'left'
33 34
34 def loop(self, tv, _sprite): 35 def loop(self, tv, _sprite):
35 ppos = tv.tile_to_view(self.pos.to_tuple()) 36 ppos = tv.tile_to_view(self.pos.to_tuple())
68 def unequip(self, item): 69 def unequip(self, item):
69 self.equipment = [e for e in self.equipment if e != item] 70 self.equipment = [e for e in self.equipment if e != item]
70 self.redraw() 71 self.redraw()
71 72
72 def redraw(self): 73 def redraw(self):
73 self.image_left = self._image_left.copy() 74 layers = [(self._image_left.copy(), self._image_right.copy(), 0)]
74 self.image_right = self._image_right.copy() 75 if hasattr(self, 'EQUIPMENT_IMAGE_ATTRIBUTE'):
75 self.equipment.sort(key=lambda x: x.DRAW_LAYER) 76 for item in self.accoutrements + self.equipment:
76 for item in self.equipment: 77 images = item.images(self.EQUIPMENT_IMAGE_ATTRIBUTE)
77 self.draw_equipment(item) 78 if images:
79 layers.append(images)
80
81 layers.sort(key=lambda l: l[2])
82
83 self.image_left = layers[0][0]
84 self.image_right = layers[0][1]
85 for l in layers[1:]:
86 self.image_left.blit(l[0], (0,0))
87 self.image_right.blit(l[1], (0,0))
88
78 self._set_image_facing(self.facing) 89 self._set_image_facing(self.facing)
79
80 def draw_equipment(self, item):
81 if not hasattr(self, 'EQUIPMENT_IMAGE_ATTRIBUTE'):
82 return
83 eq_image_attr = getattr(item, self.EQUIPMENT_IMAGE_ATTRIBUTE, 'None')
84 if not eq_image_attr:
85 return
86 eq_image_left = imagecache.load_image(eq_image_attr)
87 eq_image_right = imagecache.load_image(eq_image_attr, ("right_facing",))
88 self.image_left.blit(eq_image_left, (0, 0))
89 self.image_right.blit(eq_image_right, (0, 0))
90 90
91 def weapons(self): 91 def weapons(self):
92 return [e for e in self.equipment if equipment.is_weapon(e)] 92 return [e for e in self.equipment if equipment.is_weapon(e)]
93 93
94 def armour(self): 94 def armour(self):