comparison demos/shooter/scripts/ships/enemies.py @ 471:7a79dc2a0592

Adding the credits window (still needs to be written) Hopefully fixed some memory leaks. Moved the flashing code to the appropriate spot (in ShipBase).
author prock@33b003aa-7bff-0310-803a-e67f0ece8222
date Thu, 15 Apr 2010 15:53:06 +0000
parents 3b04e921c93d
children 3164715a0621
comparison
equal deleted inserted replaced
470:3b04e921c93d 471:7a79dc2a0592
32 super(EnemyActionListener, self).__init__(ship) 32 super(EnemyActionListener, self).__init__(ship)
33 33
34 def onInstanceActionFinished(self, instance, action): 34 def onInstanceActionFinished(self, instance, action):
35 if action.getId() == 'explode': 35 if action.getId() == 'explode':
36 self._ship.removeFromScene() 36 self._ship.removeFromScene()
37
38 super(EnemyActionListener, self).onInstanceActionFinished(instance, action)
37 39
38 class BossActionListener(ShipActionListener): 40 class BossActionListener(ShipActionListener):
39 def __init__(self, ship): 41 def __init__(self, ship):
40 super(BossActionListener, self).__init__(ship) 42 super(BossActionListener, self).__init__(ship)
41 43
42 def onInstanceActionFinished(self, instance, action): 44 def onInstanceActionFinished(self, instance, action):
43 if action.getId() == 'explode': 45 if action.getId() == 'explode':
44 self._ship.removeFromScene() 46 self._ship.removeFromScene()
45 self._ship.endLevel() 47 self._ship.endLevel()
46 elif action.getId() == 'flash': 48
47 if self._ship._flashnumber > 0: 49 super(BossActionListener, self).onInstanceActionFinished(instance, action)
48 self._ship.instance.act('flash', self._ship.instance.getFacingLocation()) 50
49 self._ship._flashnumber -= 1
50 else:
51 self._ship._flashing = False
52 51
53 class Saucer1(Ship): 52 class Saucer1(Ship):
54 def __init__(self, scene, name, instance, findInstance=True): 53 def __init__(self, scene, name, instance, findInstance=True):
55 super(Saucer1, self).__init__(scene, name, findInstance) 54 super(Saucer1, self).__init__(scene, name, findInstance)
56 self._instance = instance 55 self._instance = instance
105 self._actionlistener = EnemyActionListener(self) 104 self._actionlistener = EnemyActionListener(self)
106 105
107 self.hitpoints = 2 106 self.hitpoints = 2
108 self.scorevalue = 100 107 self.scorevalue = 100
109 108
110 109 def applyHit(self, hp):
110 self.flash(1)
111 super(Saucer2, self).applyHit(hp)
112
111 def update(self): 113 def update(self):
112 if self._dir == 1: 114 if self._dir == 1:
113 self.applyThrust(fife.DoublePoint(0,-0.25)) 115 self.applyThrust(fife.DoublePoint(0,-0.25))
114 elif self._dir == 0: 116 elif self._dir == 0:
115 self.applyThrust(fife.DoublePoint(0,0.25)) 117 self.applyThrust(fife.DoublePoint(0,0.25))
169 171
170 self._actionlistener = EnemyActionListener(self) 172 self._actionlistener = EnemyActionListener(self)
171 173
172 self.hitpoints = 2 174 self.hitpoints = 2
173 self.scorevalue = 150 175 self.scorevalue = 150
176
177 def applyHit(self, hp):
178 self.flash(1)
179 super(Streaker, self).applyHit(hp)
174 180
175 def update(self): 181 def update(self):
176 self.applyThrust(fife.DoublePoint(-0.40,0)) 182 self.applyThrust(fife.DoublePoint(-0.40,0))
177 super(Streaker, self).update() 183 super(Streaker, self).update()
178 184