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",))