Mercurial > rinkhals
diff 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 |
line wrap: on
line diff
--- a/gamelib/animal.py Fri Sep 04 18:45:45 2009 +0000 +++ b/gamelib/animal.py Fri Sep 04 19:26:02 2009 +0000 @@ -28,6 +28,7 @@ else: self.pos = Position(tile_pos[0], tile_pos[1]) self.equipment = [] + self.accoutrements = [] self.abode = None self.facing = 'left' @@ -70,23 +71,22 @@ self.redraw() def redraw(self): - self.image_left = self._image_left.copy() - self.image_right = self._image_right.copy() - self.equipment.sort(key=lambda x: x.DRAW_LAYER) - for item in self.equipment: - self.draw_equipment(item) - self._set_image_facing(self.facing) + layers = [(self._image_left.copy(), self._image_right.copy(), 0)] + if hasattr(self, 'EQUIPMENT_IMAGE_ATTRIBUTE'): + for item in self.accoutrements + self.equipment: + images = item.images(self.EQUIPMENT_IMAGE_ATTRIBUTE) + if images: + layers.append(images) - def draw_equipment(self, item): - if not hasattr(self, 'EQUIPMENT_IMAGE_ATTRIBUTE'): - return - eq_image_attr = getattr(item, self.EQUIPMENT_IMAGE_ATTRIBUTE, 'None') - if not eq_image_attr: - return - eq_image_left = imagecache.load_image(eq_image_attr) - eq_image_right = imagecache.load_image(eq_image_attr, ("right_facing",)) - self.image_left.blit(eq_image_left, (0, 0)) - self.image_right.blit(eq_image_right, (0, 0)) + layers.sort(key=lambda l: l[2]) + + self.image_left = layers[0][0] + self.image_right = layers[0][1] + for l in layers[1:]: + self.image_left.blit(l[0], (0,0)) + self.image_right.blit(l[1], (0,0)) + + self._set_image_facing(self.facing) def weapons(self): return [e for e in self.equipment if equipment.is_weapon(e)]