comparison pytouhou/game/bullet.py @ 161:7e7368356445

Add bullet cancel anim support
author Thibaut Girka <thib@sitedethib.com>
date Tue, 11 Oct 2011 11:29:33 +0200
parents 7769ce7be03c
children ee0bbde02c48
comparison
equal deleted inserted replaced
160:606468ab4f7b 161:7e7368356445
106 self.speed_interpolator = Interpolator((self.speed + 5.,), 0, 106 self.speed_interpolator = Interpolator((self.speed + 5.,), 0,
107 (self.speed,), 16) 107 (self.speed,), 16)
108 108
109 109
110 def collide(self): 110 def collide(self):
111 #TODO: animation 111 self.cancel()
112 self._removed = True 112
113
114 def cancel(self):
115 # Cancel animation
116 bt = self._bullet_type
117 self._sprite = Sprite()
118 self._sprite.angle = self.angle
119 self._anmrunner = ANMRunner(bt.anm_wrapper, bt.cancel_anim_index,
120 self._sprite, bt.launch_anim_offsets[self.sprite_idx_offset])
121 self._anmrunner.run_frame()
122
123 # Change update method
124 self.update = self.update_cancel
125
126 # Do not use this one for collisions anymore
127 self._game.bullets.remove(self)
128 self._game.cancelled_bullets.append(self)
113 129
114 130
115 def update(self): 131 def update(self):
116 dx, dy = self.launch_delta 132 dx, dy = self.launch_delta
117 self.x += dx 133 self.x += dx
118 self.y += dy 134 self.y += dy
119 135
120 if not self._anmrunner.run_frame(): 136 if not self._anmrunner.run_frame():
121 self.launch() 137 self.launch()
138
139
140 def update_cancel(self):
141 dx, dy = self.delta
142 self.x += dx
143 self.y += dy
144
145 if not self._anmrunner.run_frame():
146 self._removed = True
122 147
123 148
124 def update_simple(self): 149 def update_simple(self):
125 dx, dy = self.delta 150 dx, dy = self.delta
126 self.x += dx 151 self.x += dx