Mercurial > rinkhals
changeset 146:423050ec188b
Equipment images.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Thu, 03 Sep 2009 18:46:38 +0000 |
parents | 490ede177f50 |
children | 1cb47e6b8f61 |
files | gamelib/animal.py gamelib/equipment.py |
diffstat | 2 files changed, 29 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/gamelib/animal.py Thu Sep 03 15:14:13 2009 +0000 +++ b/gamelib/animal.py Thu Sep 03 18:46:38 2009 +0000 @@ -19,11 +19,14 @@ def __init__(self, image_left, image_right, tile_pos): # Create the animal somewhere far off screen Sprite.__init__(self, image_left, (-1000, -1000)) - self.image_left = image_left - self.image_right = image_right + self._image_left = image_left + self.image_left = image_left.copy() + self._image_right = image_right + self.image_right = image_right.copy() self.pos = Position(tile_pos[0], tile_pos[1]) self.equipment = [] self.abode = None + self.facing = 'left' def loop(self, tv, _sprite): ppos = tv.tile_to_view(self.pos.to_tuple()) @@ -44,12 +47,29 @@ def _fix_face(self, final_pos): """Set the face correctly""" if final_pos.left_of(self.pos): + self._set_image_facing('left') + elif final_pos.right_of(self.pos): + self._set_image_facing('right') + + def _set_image_facing(self, facing): + self.facing = facing + if self.facing == 'left': self.setimage(self.image_left) - elif final_pos.right_of(self.pos): + elif self.facing == 'right': self.setimage(self.image_right) def equip(self, item): self.equipment.append(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)) + self._set_image_facing(self.facing) def weapons(self): return [e for e in self.equipment if equipment.is_weapon(e)] @@ -63,6 +83,8 @@ class Chicken(Animal): """A chicken""" + EQUIPMENT_IMAGE_ATTRIBUTE = 'CHICKEN_IMAGE_FILE' + def __init__(self, pos): image_left = imagecache.load_image('sprites/chkn.png') image_right = imagecache.load_image('sprites/chkn.png',
--- a/gamelib/equipment.py Thu Sep 03 15:14:13 2009 +0000 +++ b/gamelib/equipment.py Thu Sep 03 18:46:38 2009 +0000 @@ -50,6 +50,8 @@ RANGE_MODIFIER = 15 HIT_SOUND = "fire-rifle.ogg" + CHICKEN_IMAGE_FILE = 'sprites/equip_rifle.png' + class Knife(Weapon): NAME = "knife" BUY_PRICE = 20 @@ -59,6 +61,8 @@ BASE_HIT = 70 RANGE_MODIFIER = 0 + CHICKEN_IMAGE_FILE = 'sprites/equip_knife.png' + def is_equipment(obj): """Return true if obj is a build class.""" return getattr(obj, "IS_EQUIPMENT", False) and hasattr(obj, "NAME")