Changeset 143:deac6a4008e7 for nagslang
- Timestamp:
- Sep 2, 2013, 8:35:41 PM (7 years ago)
- Branch:
- default
- Location:
- nagslang
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
nagslang/game_object.py
r140 r143 151 151 self._render_shape(surface, pos, angle) 152 152 153 def animate(self): 154 # Used by time animatations to advance the clock 155 pass 156 153 157 154 158 def image_pos(image, pos): … … 184 188 surface.blit(image, image_pos(image, pos)) 185 189 super(FacingImageRenderer, self).render(surface) 190 191 192 class AnimatedFacingImageRenderer(FacingImageRenderer): 193 def __init__(self, left_images, right_images): 194 self._images = { 195 'left': left_images, 196 'right': right_images, 197 } 198 self._frame = 0 199 self._moving = False 200 201 def get_image(self, angle): 202 if abs(angle) < math.pi / 2: 203 face = 'right' 204 else: 205 face = 'left' 206 if self._frame >= len(self._images[face]): 207 self._frame = 0 208 return self._images[face][self._frame] 209 210 def render(self, surface): 211 pos = self.game_object.get_render_position(surface) 212 image = self.get_image(self.game_object.get_render_angle()) 213 surface.blit(image, image_pos(image, pos)) 214 super(FacingImageRenderer, self).render(surface) 215 216 def animate(self): 217 if self._moving: 218 self._frame += 1 219 else: 220 self._frame = 0 221 222 def start(self): 223 self._moving = True 224 225 def stop(self): 226 self._moving = False 227 228 229 class TimedAnimatedRenderer(ImageRenderer): 230 231 def __init__(self, images): 232 self._images = images 233 self._frame = 0 234 self._image = None 235 236 def _get_image(self): 237 if self._frame > len(self._imaages): 238 self._frame = 0 239 return self._images[self._frame] 240 241 def render(self, surface): 242 self._image = self._get_image() 243 super(TimedAnimatedRenderer, self).render(surface) 244 245 def animate(self): 246 self._frame += 1 186 247 187 248 … … 254 315 def render(self, surface): 255 316 return self.renderer.render(surface) 317 318 def animate(self): 319 self.renderer.animate() 256 320 257 321 -
nagslang/protagonist.py
r133 r143 4 4 from nagslang.constants import COLLISION_TYPE_PLAYER, ZORDER_MID 5 5 from nagslang.game_object import ( 6 GameObject, SingleShapePhysicser, FacingImageRenderer, make_body)6 GameObject, SingleShapePhysicser, AnimatedFacingImageRenderer, make_body) 7 7 from nagslang.mutators import FLIP_H 8 8 from nagslang.resources import resources … … 51 51 def _setup_renderers(self): 52 52 self._renderers = { 53 self.HUMAN_FORM: FacingImageRenderer( 54 self._get_image('human_1.png'), 55 self._get_image('human_1.png', FLIP_H)), 56 self.WOLF_FORM: FacingImageRenderer( 57 self._get_image('werewolf_1.png'), 58 self._get_image('werewolf_1.png', FLIP_H)), 53 self.HUMAN_FORM: AnimatedFacingImageRenderer( 54 (self._get_image('human_1.png'), 55 self._get_image('human_1.png'), 56 self._get_image('human_1.png'), 57 self._get_image('human_2.png'), 58 self._get_image('human_2.png'), 59 self._get_image('human_2.png')), 60 (self._get_image('human_1.png', FLIP_H), 61 self._get_image('human_1.png', FLIP_H), 62 self._get_image('human_1.png', FLIP_H), 63 self._get_image('human_2.png', FLIP_H), 64 self._get_image('human_2.png', FLIP_H), 65 self._get_image('human_2.png', FLIP_H))), 66 self.WOLF_FORM: AnimatedFacingImageRenderer( 67 (self._get_image('werewolf_1.png'), 68 self._get_image('werewolf_1.png'), 69 self._get_image('werewolf_1.png'), 70 self._get_image('werewolf_2.png'), 71 self._get_image('werewolf_2.png'), 72 self._get_image('werewolf_2.png')), 73 (self._get_image('werewolf_1.png', FLIP_H), 74 self._get_image('werewolf_1.png', FLIP_H), 75 self._get_image('werewolf_1.png', FLIP_H), 76 self._get_image('werewolf_2.png', FLIP_H), 77 self._get_image('werewolf_2.png', FLIP_H), 78 self._get_image('werewolf_2.png', FLIP_H))), 59 79 } 60 80 for renderer in self._renderers.values(): … … 94 114 def set_direction(self, dx, dy): 95 115 if (dx, dy) == (0, 0): 116 self.renderer.stop() 96 117 return 97 118 self.angle = pymunk.Vec2d((dx, dy)).angle 98 119 self._body.apply_impulse( 99 120 (dx * self.impulse_factor, dy * self.impulse_factor)) 121 self.renderer.start() 100 122 101 123 def toggle_form(self): -
nagslang/screens/area.py
r140 r143 163 163 def tick(self, seconds): 164 164 self.tick_protagonist() 165 for drawable in self._drawables: 166 drawable.animate() 165 167 super(AreaScreen, self).tick(seconds)
Note: See TracChangeset
for help on using the changeset viewer.