Mercurial > rinkhals
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): |