comparison demos/shooter/scripts/ships/enemies.py @ 463:ac0f62a07a3e

Added enemy explosions and other animations. Remove the enemies from the scene after the explosion animation is complete.
author prock@33b003aa-7bff-0310-803a-e67f0ece8222
date Mon, 12 Apr 2010 20:41:24 +0000
parents c4f745a566d6
children 4d0aa75a82f1
comparison
equal deleted inserted replaced
462:c4f745a566d6 463:ac0f62a07a3e
27 from scripts.weapons import * 27 from scripts.weapons import *
28 28
29 29
30 class EnemyActionListener(ShipActionListener): 30 class EnemyActionListener(ShipActionListener):
31 def __init__(self, ship): 31 def __init__(self, ship):
32 super(PlayerActionListener, self).__init__(ship) 32 super(EnemyActionListener, self).__init__(ship)
33 33
34 def onInstanceActionFinished(self, instance, action): 34 def onInstanceActionFinished(self, instance, action):
35 pass 35 if action.getId() == 'explode':
36 self._ship.removeFromScene()
36 37
37 class Saucer1(Ship): 38 class Saucer1(Ship):
38 def __init__(self, scene, name, findInstance=True): 39 def __init__(self, scene, name, instance, findInstance=True):
39 super(Saucer1, self).__init__(scene, name, findInstance) 40 super(Saucer1, self).__init__(scene, name, findInstance)
41 self._instance = instance
40 self._dir = 0 42 self._dir = 0
41 self._time = 500 43 self._time = 500
42 self.width = 0.2 44 self.width = 0.2
43 self.height = 0.075 45 self.height = 0.075
44 self.velocity.x = -0.5 46 self.velocity.x = -0.5
45 47
46 self.weapon = Cannon(self._scene, self, 1000) 48 self.weapon = Cannon(self._scene, self, 1000)
47 self.weapon.projectilevelocity = 0.4 49 self.weapon.projectilevelocity = 0.4
50
51 self._actionlistener = EnemyActionListener(self)
48 52
49 def update(self): 53 def update(self):
50 if self._dir == 1: 54 if self._dir == 1:
51 self.applyThrust(fife.DoublePoint(0,-0.5)) 55 self.applyThrust(fife.DoublePoint(0,-0.5))
52 elif self._dir == 0: 56 elif self._dir == 0:
63 self._time += self._scene.timedelta 67 self._time += self._scene.timedelta
64 68
65 super(Saucer1, self).update() 69 super(Saucer1, self).update()
66 70
67 class Saucer2(Ship): 71 class Saucer2(Ship):
68 def __init__(self, scene, name, findInstance=True): 72 def __init__(self, scene, name, instance, findInstance=True):
69 super(Saucer2, self).__init__(scene, name, findInstance) 73 super(Saucer2, self).__init__(scene, name, findInstance)
74 self._instance = instance
70 self._dir = 0 75 self._dir = 0
71 self._time = 1000 76 self._time = 1000
72 self.width = 0.2 77 self.width = 0.2
73 self.height = 0.2 78 self.height = 0.2
74 self.velocity.x = -0.1 79 self.velocity.x = -0.1
75 80
76 self.weapon = Cannon(self._scene, self, 2000) 81 self.weapon = Cannon(self._scene, self, 2000)
77 self.weapon.projectilevelocity = 0.4 82 self.weapon.projectilevelocity = 0.4
83
84 self._actionlistener = EnemyActionListener(self)
78 85
79 def update(self): 86 def update(self):
80 if self._dir == 1: 87 if self._dir == 1:
81 self.applyThrust(fife.DoublePoint(0,-0.25)) 88 self.applyThrust(fife.DoublePoint(0,-0.25))
82 elif self._dir == 0: 89 elif self._dir == 0:
93 self._time += self._scene.timedelta 100 self._time += self._scene.timedelta
94 101
95 super(Saucer2, self).update() 102 super(Saucer2, self).update()
96 103
97 class DiagSaucer(Ship): 104 class DiagSaucer(Ship):
98 def __init__(self, scene, name, direction, findInstance=True): 105 def __init__(self, scene, name, direction, instance, findInstance=True):
99 super(DiagSaucer, self).__init__(scene, name, findInstance) 106 super(DiagSaucer, self).__init__(scene, name, findInstance)
107 self._instance = instance
100 self.width = 0.2 108 self.width = 0.2
101 self.height = 0.075 109 self.height = 0.075
102 110
103 if direction == 0: 111 if direction == 0:
104 self._ythrust = 0.25 112 self._ythrust = 0.25
105 else: 113 else:
106 self._ythrust = -0.25 114 self._ythrust = -0.25
107 115
108 self.weapon = Cannon(self._scene, self, 2000) 116 self.weapon = Cannon(self._scene, self, 2000)
109 self.weapon.projectilevelocity = 0.4 117 self.weapon.projectilevelocity = 0.4
118
119 self._actionlistener = EnemyActionListener(self)
110 120
111 def update(self): 121 def update(self):
112 self.applyThrust(fife.DoublePoint(-0.25,self._ythrust)) 122 self.applyThrust(fife.DoublePoint(-0.25,self._ythrust))
113 super(DiagSaucer, self).update() 123 super(DiagSaucer, self).update()
114 124
115 class Streaker(Ship): 125 class Streaker(Ship):
116 def __init__(self, scene, name, findInstance=True): 126 def __init__(self, scene, name, instance, findInstance=True):
117 super(Streaker, self).__init__(scene, name, findInstance) 127 super(Streaker, self).__init__(scene, name, findInstance)
118 128 self._instance = instance
119 self.width = 0.2 129 self.width = 0.2
120 self.height = 0.2 130 self.height = 0.2
121 131
122 self._maxvelocity = 2.0 132 self._maxvelocity = 2.0
123 133
124 self.weapon = Cannon(self._scene, self, 2000) 134 self.weapon = Cannon(self._scene, self, 2000)
125 self.weapon.projectilevelocity = 1.0 135 self.weapon.projectilevelocity = 1.0
136
137 self._actionlistener = EnemyActionListener(self)
126 138
127 def update(self): 139 def update(self):
128 self.applyThrust(fife.DoublePoint(-0.40,0)) 140 self.applyThrust(fife.DoublePoint(-0.40,0))
129 super(Streaker, self).update() 141 super(Streaker, self).update()