comparison pytouhou/game/effect.py @ 193:9f58e2a6e950

Fix particles, fix "random" item popping, change update order to match the original game's more closely.
author Thibaut Girka <thib@sitedethib.com>
date Fri, 28 Oct 2011 12:38:26 +0200
parents dbe6b7b2d3fc
children f3099ebf4f61
comparison
equal deleted inserted replaced
192:5e84dfd153ab 193:9f58e2a6e950
38 if self._sprite._removed: 38 if self._sprite._removed:
39 self._sprite = None 39 self._sprite = None
40 40
41 41
42 class Particle(object): 42 class Particle(object):
43 def __init__(self, start_pos, index, anm_wrapper, size, amp, delay, game): 43 def __init__(self, start_pos, index, anm_wrapper, size, amp, game):
44 self._sprite = Sprite() 44 self._sprite = Sprite()
45 self._sprite.anm, self._sprite.texcoords = anm_wrapper.get_sprite(index) 45 self._sprite.anm, self._sprite.texcoords = anm_wrapper.get_sprite(index)
46 self._game = game 46 self._game = game
47 self._removed = False 47 self._removed = False
48 48
54 54
55 self.pos_interpolator = None 55 self.pos_interpolator = None
56 self.scale_interpolator = None 56 self.scale_interpolator = None
57 self.rotations_interpolator = None 57 self.rotations_interpolator = None
58 58
59 self.delay = delay
60 self.amp = amp 59 self.amp = amp
61 60
62 61
63 def set_end_pos(self, amp): 62 def set_end_pos(self, amp):
64 end_pos = (self.x + amp * self._game.prng.rand_double() - amp/2, 63 end_pos = (self.x + amp * self._game.prng.rand_double() - amp/2,
71 self.rotations_interpolator = Interpolator(self._sprite.rotations_3d, 0, 70 self.rotations_interpolator = Interpolator(self._sprite.rotations_3d, 0,
72 (0., 0., 2*pi), 24) 71 (0., 0., 2*pi), 24)
73 72
74 73
75 def update(self): 74 def update(self):
76 if (self.frame == 0 and not self.delay) or (self.frame == 1 and self.delay): 75 if self.frame == 0:
77 self.set_end_pos(self.amp) 76 self.set_end_pos(self.amp)
78 77
79 if self.pos_interpolator: 78 if self.pos_interpolator:
80 self.pos_interpolator.update(self.frame) 79 self.pos_interpolator.update(self.frame)
81 self.x, self.y = self.pos_interpolator.values 80 self.x, self.y = self.pos_interpolator.values