Mercurial > fife-parpg
diff demos/shooter/scripts/ships/enemies.py @ 467:4d0aa75a82f1
Added damage so some enemies take more than one hit to destroy.
Added the boss at the end of the level.
For some reason the high score dialog box that appears after the level is completed causes a crash. Still looking into this one.
author | prock@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Wed, 14 Apr 2010 16:22:36 +0000 |
parents | ac0f62a07a3e |
children | 3b04e921c93d |
line wrap: on
line diff
--- a/demos/shooter/scripts/ships/enemies.py Tue Apr 13 21:30:51 2010 +0000 +++ b/demos/shooter/scripts/ships/enemies.py Wed Apr 14 16:22:36 2010 +0000 @@ -35,6 +35,15 @@ if action.getId() == 'explode': self._ship.removeFromScene() +class BossActionListener(ShipActionListener): + def __init__(self, ship): + super(BossActionListener, self).__init__(ship) + + def onInstanceActionFinished(self, instance, action): + if action.getId() == 'explode': + self._ship.removeFromScene() + self._ship.endLevel() + class Saucer1(Ship): def __init__(self, scene, name, instance, findInstance=True): super(Saucer1, self).__init__(scene, name, findInstance) @@ -49,6 +58,9 @@ self.weapon.projectilevelocity = 0.4 self._actionlistener = EnemyActionListener(self) + + self.hitpoints = 1 + self.scorevalue = 50 def update(self): if self._dir == 1: @@ -82,6 +94,10 @@ self.weapon.projectilevelocity = 0.4 self._actionlistener = EnemyActionListener(self) + + self.hitpoints = 2 + self.scorevalue = 100 + def update(self): if self._dir == 1: @@ -117,6 +133,9 @@ self.weapon.projectilevelocity = 0.4 self._actionlistener = EnemyActionListener(self) + + self.hitpoints = 1 + self.scorevalue = 50 def update(self): self.applyThrust(fife.DoublePoint(-0.25,self._ythrust)) @@ -135,7 +154,33 @@ self.weapon.projectilevelocity = 1.0 self._actionlistener = EnemyActionListener(self) - + + self.hitpoints = 2 + self.scorevalue = 150 + def update(self): self.applyThrust(fife.DoublePoint(-0.40,0)) - super(Streaker, self).update() \ No newline at end of file + super(Streaker, self).update() + +class Boss(Ship): + def __init__(self, scene, name, instance, findInstance=True): + super(Boss, self).__init__(scene, name, findInstance) + self._instance = instance + self.width = 0.2 + self.height = 0.2 + + self._maxvelocity = 2.0 + + self.weapon = Cannon(self._scene, self, 1000) + self.weapon.projectilevelocity = 0.5 + + self._actionlistener = BossActionListener(self) + + self.hitpoints = 20 + self.scorevalue = 1000 + + def endLevel(self): + self._scene.endLevel() + + def update(self): + super(Boss, self).update() \ No newline at end of file