Mercurial > rinkhals
comparison gamelib/animal.py @ 146:423050ec188b
Equipment images.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Thu, 03 Sep 2009 18:46:38 +0000 |
parents | 490ede177f50 |
children | 2a1064fae608 |
comparison
equal
deleted
inserted
replaced
145:490ede177f50 | 146:423050ec188b |
---|---|
17 STEALTH = 0 | 17 STEALTH = 0 |
18 | 18 |
19 def __init__(self, image_left, image_right, tile_pos): | 19 def __init__(self, image_left, image_right, tile_pos): |
20 # Create the animal somewhere far off screen | 20 # Create the animal somewhere far off screen |
21 Sprite.__init__(self, image_left, (-1000, -1000)) | 21 Sprite.__init__(self, image_left, (-1000, -1000)) |
22 self.image_left = image_left | 22 self._image_left = image_left |
23 self.image_right = image_right | 23 self.image_left = image_left.copy() |
24 self._image_right = image_right | |
25 self.image_right = image_right.copy() | |
24 self.pos = Position(tile_pos[0], tile_pos[1]) | 26 self.pos = Position(tile_pos[0], tile_pos[1]) |
25 self.equipment = [] | 27 self.equipment = [] |
26 self.abode = None | 28 self.abode = None |
29 self.facing = 'left' | |
27 | 30 |
28 def loop(self, tv, _sprite): | 31 def loop(self, tv, _sprite): |
29 ppos = tv.tile_to_view(self.pos.to_tuple()) | 32 ppos = tv.tile_to_view(self.pos.to_tuple()) |
30 self.rect.x = ppos[0] | 33 self.rect.x = ppos[0] |
31 self.rect.y = ppos[1] | 34 self.rect.y = ppos[1] |
42 self.pos = new_pos | 45 self.pos = new_pos |
43 | 46 |
44 def _fix_face(self, final_pos): | 47 def _fix_face(self, final_pos): |
45 """Set the face correctly""" | 48 """Set the face correctly""" |
46 if final_pos.left_of(self.pos): | 49 if final_pos.left_of(self.pos): |
50 self._set_image_facing('left') | |
51 elif final_pos.right_of(self.pos): | |
52 self._set_image_facing('right') | |
53 | |
54 def _set_image_facing(self, facing): | |
55 self.facing = facing | |
56 if self.facing == 'left': | |
47 self.setimage(self.image_left) | 57 self.setimage(self.image_left) |
48 elif final_pos.right_of(self.pos): | 58 elif self.facing == 'right': |
49 self.setimage(self.image_right) | 59 self.setimage(self.image_right) |
50 | 60 |
51 def equip(self, item): | 61 def equip(self, item): |
52 self.equipment.append(item) | 62 self.equipment.append(item) |
63 if not hasattr(self, 'EQUIPMENT_IMAGE_ATTRIBUTE'): | |
64 return | |
65 eq_image_attr = getattr(item, self.EQUIPMENT_IMAGE_ATTRIBUTE, 'None') | |
66 if not eq_image_attr: | |
67 return | |
68 eq_image_left = imagecache.load_image(eq_image_attr) | |
69 eq_image_right = imagecache.load_image(eq_image_attr, ("right_facing",)) | |
70 self.image_left.blit(eq_image_left, (0, 0)) | |
71 self.image_right.blit(eq_image_right, (0, 0)) | |
72 self._set_image_facing(self.facing) | |
53 | 73 |
54 def weapons(self): | 74 def weapons(self): |
55 return [e for e in self.equipment if equipment.is_weapon(e)] | 75 return [e for e in self.equipment if equipment.is_weapon(e)] |
56 | 76 |
57 def covers(self, tile_pos): | 77 def covers(self, tile_pos): |
60 def outside(self): | 80 def outside(self): |
61 return self.abode is None | 81 return self.abode is None |
62 | 82 |
63 class Chicken(Animal): | 83 class Chicken(Animal): |
64 """A chicken""" | 84 """A chicken""" |
85 | |
86 EQUIPMENT_IMAGE_ATTRIBUTE = 'CHICKEN_IMAGE_FILE' | |
65 | 87 |
66 def __init__(self, pos): | 88 def __init__(self, pos): |
67 image_left = imagecache.load_image('sprites/chkn.png') | 89 image_left = imagecache.load_image('sprites/chkn.png') |
68 image_right = imagecache.load_image('sprites/chkn.png', | 90 image_right = imagecache.load_image('sprites/chkn.png', |
69 ("right_facing",)) | 91 ("right_facing",)) |