Mercurial > fife-parpg
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() |