# HG changeset patch
# User prock@33b003aa-7bff-0310-803a-e67f0ece8222
# Date 1271272527 0
# Node ID 3b04e921c93d6c894a2622138df30f6387e99ee5
# Parent 5994e61cdebd19d2a467d06789972c9516fa6426
Added the fireball projectile.
Added a new ship images for the boss.
Some enemies now shoot directly at the player.
diff -r 5994e61cdebd -r 3b04e921c93d demos/shooter/maps/shooter_map1.xml
--- a/demos/shooter/maps/shooter_map1.xml Wed Apr 14 17:42:24 2010 +0000
+++ b/demos/shooter/maps/shooter_map1.xml Wed Apr 14 19:15:27 2010 +0000
@@ -4,7 +4,9 @@
+
+
@@ -564,7 +566,7 @@
-
+
diff -r 5994e61cdebd -r 3b04e921c93d demos/shooter/objects/projectiles/fireball/fire_ball.png
Binary file demos/shooter/objects/projectiles/fireball/fire_ball.png has changed
diff -r 5994e61cdebd -r 3b04e921c93d demos/shooter/objects/projectiles/fireball/object.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/demos/shooter/objects/projectiles/fireball/object.xml Wed Apr 14 19:15:27 2010 +0000
@@ -0,0 +1,4 @@
+
+
diff -r 5994e61cdebd -r 3b04e921c93d demos/shooter/objects/ships/boss1/explode/animation.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/demos/shooter/objects/ships/boss1/explode/animation.xml Wed Apr 14 19:15:27 2010 +0000
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff -r 5994e61cdebd -r 3b04e921c93d demos/shooter/objects/ships/boss1/explode/boss_0.png
Binary file demos/shooter/objects/ships/boss1/explode/boss_0.png has changed
diff -r 5994e61cdebd -r 3b04e921c93d demos/shooter/objects/ships/boss1/explode/boss_1.png
Binary file demos/shooter/objects/ships/boss1/explode/boss_1.png has changed
diff -r 5994e61cdebd -r 3b04e921c93d demos/shooter/objects/ships/boss1/explode/boss_2.png
Binary file demos/shooter/objects/ships/boss1/explode/boss_2.png has changed
diff -r 5994e61cdebd -r 3b04e921c93d demos/shooter/objects/ships/boss1/explode/boss_3.png
Binary file demos/shooter/objects/ships/boss1/explode/boss_3.png has changed
diff -r 5994e61cdebd -r 3b04e921c93d demos/shooter/objects/ships/boss1/explode/boss_4.png
Binary file demos/shooter/objects/ships/boss1/explode/boss_4.png has changed
diff -r 5994e61cdebd -r 3b04e921c93d demos/shooter/objects/ships/boss1/explode/boss_5.png
Binary file demos/shooter/objects/ships/boss1/explode/boss_5.png has changed
diff -r 5994e61cdebd -r 3b04e921c93d demos/shooter/objects/ships/boss1/flash/animation.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/demos/shooter/objects/ships/boss1/flash/animation.xml Wed Apr 14 19:15:27 2010 +0000
@@ -0,0 +1,5 @@
+
+
+
+
+
diff -r 5994e61cdebd -r 3b04e921c93d demos/shooter/objects/ships/boss1/flash/boss_0.png
Binary file demos/shooter/objects/ships/boss1/flash/boss_0.png has changed
diff -r 5994e61cdebd -r 3b04e921c93d demos/shooter/objects/ships/boss1/flash/boss_1.png
Binary file demos/shooter/objects/ships/boss1/flash/boss_1.png has changed
diff -r 5994e61cdebd -r 3b04e921c93d demos/shooter/objects/ships/boss1/fly/animation.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/demos/shooter/objects/ships/boss1/fly/animation.xml Wed Apr 14 19:15:27 2010 +0000
@@ -0,0 +1,3 @@
+
+
+
diff -r 5994e61cdebd -r 3b04e921c93d demos/shooter/objects/ships/boss1/fly/boss.png
Binary file demos/shooter/objects/ships/boss1/fly/boss.png has changed
diff -r 5994e61cdebd -r 3b04e921c93d demos/shooter/objects/ships/boss1/object.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/demos/shooter/objects/ships/boss1/object.xml Wed Apr 14 19:15:27 2010 +0000
@@ -0,0 +1,12 @@
+
+
diff -r 5994e61cdebd -r 3b04e921c93d demos/shooter/scripts/scene.py
--- a/demos/shooter/scripts/scene.py Wed Apr 14 17:42:24 2010 +0000
+++ b/demos/shooter/scripts/scene.py Wed Apr 14 19:15:27 2010 +0000
@@ -274,10 +274,6 @@
self.moveObjectInScene(obj)
if obj != self._player:
- #TODO: enemy should fire weapon in their update function
- if obj.running:
- obj.fire(fife.DoublePoint(-1,0))
-
if obj.running and obj.boundingbox.intersects(self._player.boundingbox):
#player touched an enemy. Destroy player and
#re-initialize scene
diff -r 5994e61cdebd -r 3b04e921c93d demos/shooter/scripts/ships/enemies.py
--- a/demos/shooter/scripts/ships/enemies.py Wed Apr 14 17:42:24 2010 +0000
+++ b/demos/shooter/scripts/ships/enemies.py Wed Apr 14 19:15:27 2010 +0000
@@ -43,7 +43,13 @@
if action.getId() == 'explode':
self._ship.removeFromScene()
self._ship.endLevel()
-
+ elif action.getId() == 'flash':
+ if self._ship._flashnumber > 0:
+ self._ship.instance.act('flash', self._ship.instance.getFacingLocation())
+ self._ship._flashnumber -= 1
+ else:
+ self._ship._flashing = False
+
class Saucer1(Ship):
def __init__(self, scene, name, instance, findInstance=True):
super(Saucer1, self).__init__(scene, name, findInstance)
@@ -79,6 +85,9 @@
self._time += self._scene.timedelta
super(Saucer1, self).update()
+
+ self.fire(fife.DoublePoint(-1,0))
+
class Saucer2(Ship):
def __init__(self, scene, name, instance, findInstance=True):
@@ -117,6 +126,8 @@
super(Saucer2, self).update()
+ self.fire(fife.DoublePoint(-1,0))
+
class DiagSaucer(Ship):
def __init__(self, scene, name, direction, instance, findInstance=True):
super(DiagSaucer, self).__init__(scene, name, findInstance)
@@ -140,6 +151,9 @@
def update(self):
self.applyThrust(fife.DoublePoint(-0.25,self._ythrust))
super(DiagSaucer, self).update()
+
+ self.fire(fife.DoublePoint(-1,0))
+
class Streaker(Ship):
def __init__(self, scene, name, instance, findInstance=True):
@@ -150,8 +164,8 @@
self._maxvelocity = 2.0
- self.weapon = Cannon(self._scene, self, 2000)
- self.weapon.projectilevelocity = 1.0
+ self.weapon = FireBall(self._scene, self, 2000)
+ self.weapon.projectilevelocity = 0.25
self._actionlistener = EnemyActionListener(self)
@@ -161,17 +175,26 @@
def update(self):
self.applyThrust(fife.DoublePoint(-0.40,0))
super(Streaker, self).update()
+
+ playerloc = self._scene.player.location.getExactLayerCoordinates()
+ enemyloc = self.location.getExactLayerCoordinates()
+
+ playerloc.x -= enemyloc.x
+ playerloc.y -= enemyloc.y
+
+ self.fire(fife.DoublePoint(playerloc.x,playerloc.y))
+
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.width = 0.85
+ self.height = 0.25
self._maxvelocity = 2.0
- self.weapon = Cannon(self._scene, self, 1000)
+ self.weapon = FireBall(self._scene, self, 1000)
self.weapon.projectilevelocity = 0.5
self._actionlistener = BossActionListener(self)
@@ -183,4 +206,17 @@
self._scene.endLevel()
def update(self):
- super(Boss, self).update()
\ No newline at end of file
+ super(Boss, self).update()
+
+ playerloc = self._scene.player.location.getExactLayerCoordinates()
+ bossloc = self.location.getExactLayerCoordinates()
+
+ playerloc.x -= bossloc.x
+ playerloc.y -= bossloc.y
+
+ self.fire(fife.DoublePoint(playerloc.x,playerloc.y))
+
+
+ def applyHit(self, hp):
+ self.flash(2)
+ super(Boss, self).applyHit(hp)
\ No newline at end of file
diff -r 5994e61cdebd -r 3b04e921c93d demos/shooter/scripts/weapons.py
--- a/demos/shooter/scripts/weapons.py Wed Apr 14 17:42:24 2010 +0000
+++ b/demos/shooter/scripts/weapons.py Wed Apr 14 19:15:27 2010 +0000
@@ -124,5 +124,23 @@
pjctl.run(velocity, self._ship.location)
self._lastfired = self._scene.time
self._scene.addProjectileToScene(pjctl)
-
+
+class FireBall(Weapon):
+ def __init__(self, scene, ship, firerate):
+ super(FireBall, self).__init__(scene, ship, firerate)
+
+ #cannon's projectile velocity
+ self._projectileVelocity = 0.50
+
+ def fire(self, direction):
+ velocity = normalize(direction)
+ velocity.x = velocity.x * self._projectileVelocity
+ velocity.y = velocity.y * self._projectileVelocity
+
+ if (self._scene.time - self._lastfired) > self._firerate:
+ pjctl = Projectile(self._scene, self._ship, "fireball", 6000 )
+ pjctl.run(velocity, self._ship.location)
+ self._lastfired = self._scene.time
+ self._scene.addProjectileToScene(pjctl)
+