Browse Source

Updates to SpaceGame

Josh Engebretson 11 years ago
parent
commit
69bfcbe61f

+ 51 - 17
SpaceGame/Resources/Components/Bullet.js

@@ -3,14 +3,14 @@ var node = self.node;
 
 self.isPlayer = false;
 
-self.init = function (isPlayer, spawnPosition) {
+self.init = function(isPlayer, spawnPosition) {
 
     self.isPlayer = isPlayer;
 
     var laserSound = game.getSound(self.isPlayer ? "Sounds/laser01.wav" : "Sounds/laser02.wav");
     var sprite2D = node.createComponent("StaticSprite2D");
 
-    if (self.isPlayer)    
+    if (self.isPlayer)
         sprite2D.sprite = game.getSprite2D("Sprites/blue_beam.png");
     else
         sprite2D.sprite = game.getSprite2D("Sprite2D", "Sprites/green_beam.png");
@@ -22,10 +22,9 @@ self.init = function (isPlayer, spawnPosition) {
     self.soundSource.gain = 0.75;
     self.soundSource.play(laserSound);
 
-    node.position2D =  spawnPosition;
+    node.position2D = spawnPosition;
 
-    if (!self.isPlayer)
-    {
+    if (!self.isPlayer) {
         node.roll(180);
     }
 
@@ -33,25 +32,60 @@ self.init = function (isPlayer, spawnPosition) {
 
 function start() {
 
-	
+
 }
 
-function update(timeStep) {	
+function updatePlayerBullet() {
+
+    var bpos = node.position2D;
+
+    // off the top of the screen
+    if (bpos[1] > SpaceGame.halfHeight) {
+        return true;
+    }
+
+    for (var i = 0; i < SpaceGame.enemies.length; i++) {
+
+        var enemy = SpaceGame.enemies[i];
 
-	var speed = self.isPlayer ? 8 : 5;	
-	speed *= timeStep;
-	node.translate2D([0, speed]);
+        var epos = enemy.node.worldPosition2D;
 
-    if (self.isPlayer) {        
+        if (Math.abs(epos[0] - bpos[0]) < 0.25 &&
+            Math.abs(epos[1] - bpos[1]) < 0.25) {
+            
+            enemy.onHit();
 
-        var bpos = node.position2D;
+            return true;
+        }
+        
+        if (SpaceGame.capitalShip) {
+            
+            var epos = SpaceGame.capitalShip.node.worldPosition2D;
+            
+            if (Math.abs(epos[0] - bpos[0]) < 0.75 &&
+                Math.abs(epos[1] - bpos[1]) < 0.75) {
+                
+                SpaceGame.capitalShip.onHit(bpos);
+    
+                return true;
+            }
+                        
+        }
 
-        // off the top of the screen
-        if (bpos[1] > SpaceGame.halfHeight)
-        {
+    }
+}
+
+function update(timeStep) {
+
+    var speed = self.isPlayer ? 8 : 5;
+    speed *= timeStep;
+    node.translate2D([0, speed]);
+
+    if (self.isPlayer) {
+        if (updatePlayerBullet()) {
             Atomic.destroy(node);
-            return;
         }
+
     }
 
-}
+}

+ 49 - 13
SpaceGame/Resources/Components/CapitalShip.js

@@ -1,11 +1,50 @@
-
 var game = Atomic.game;
 var node = self.node;
+var scene = game.scene;
 
 self.allowShoot = true;
 self.shootDelta = 0;
 
-self.health = 60;
+self.health = 40;
+
+self.onHit = function(pos) {
+
+
+    var expNode = game.scene.createChild("Explosion");
+    var exp = expNode.createJSComponent("Explosion");
+    exp.init(pos);
+
+    var expNode = game.scene.createChild("Explosion");
+    exp = expNode.createComponent("JSComponent");
+    exp.spawnPosition = pos;
+    exp.node.scale2D = [2.0, 2.0];
+
+    self.health--;
+    if (!self.health) {
+        die();
+    }
+
+}
+
+function die() {
+
+    SpaceGame.capitalShipDestroyed();
+
+    for (var i = 0; i < 16; i++) {
+        var pos = node.position2D;
+        pos[0] += SpaceGame.random(-2, 2);
+        pos[1] += SpaceGame.random(-2, 2);
+
+        var expNode = scene.createChild("Explosion");
+        var exp = expNode.createJSComponent("Explosion");
+        exp.init(pos);    
+        
+        var randomSize = SpaceGame.random(4, 8);
+        exp.node.scale2D = [randomSize, randomSize];
+    }
+
+
+}
 
 
 // using start to initialize the script component
@@ -15,12 +54,12 @@ function start() {
 
     // add a sprite component to our node
     var sprite2D = node.createComponent("StaticSprite2D");
-    sprite2D.blendMode = Atomic.BLEND_ALPHA;    
+    sprite2D.blendMode = Atomic.BLEND_ALPHA;
     sprite2D.sprite = spaceSheet.getSprite("spaceship_locust");
 
-    node.position2D =  [-4, SpaceGame.halfHeight - 1];
+    node.position2D = [-4, SpaceGame.halfHeight - 1];
     node.roll(180);
-    
+
 }
 
 // update function called per frame with delta time
@@ -28,22 +67,19 @@ function update(timeStep) {
 
     var pos = node.position2D;
     var ppos = SpaceGame.playerNode.position2D;
-    
-    if (Math.abs(pos[0] - ppos[0]) > .25)
-    {
+
+    if (Math.abs(pos[0] - ppos[0]) > .25) {
         if (pos[0] < ppos[0])
             pos[0] += timeStep * .95;
         else
             pos[0] -= timeStep * .95;
 
         node.position2D = pos;
-    }
-    else
-    {
-    	//aiShoot(timeStep);
+    } else {
+        //aiShoot(timeStep);
 
     }
 
 
 
-}
+}

+ 18 - 10
SpaceGame/Resources/Components/Enemy.js

@@ -1,4 +1,3 @@
-
 var game = Atomic.game;
 var node = self.node;
 
@@ -7,16 +6,27 @@ self.shootDelta = 0;
 
 var moveDelta = 0;
 
+var dead = false;
+
+self.onHit = function() {
+    
+    var expNode = game.scene.createChild("Explosion");
+    var exp = expNode.createJSComponent("Explosion");
+    exp.init(node.worldPosition2D);    
+    SpaceGame.removeEnemy(self);
+    
+}
+
 function start() {
 
     var spaceSheet = game.getSpriteSheet("Sprites/spacegame_sheet.xml");
 
     // add a sprite component to our node
     var sprite2D = node.createComponent("StaticSprite2D");
-    sprite2D.blendMode = Atomic.BLEND_ALPHA;    
+    sprite2D.blendMode = Atomic.BLEND_ALPHA;
     sprite2D.sprite = spaceSheet.getSprite(self.spriteName);
 
-    node.position2D =  self.spawnPosition;
+    node.position2D = self.spawnPosition;
     node.roll(180);
     node.scale2D = [0.65, 0.65];
 
@@ -30,24 +40,22 @@ function update(timeStep) {
 
     var pos = node.position2D;
     var ppos = SpaceGame.playerNode.position2D;
-    
+
     if (Math.abs(pos[0] - ppos[0]) < .25) {
-        
+
         //aiShoot(timeStep);
 
     }
 
-    if (Math.random() > .98)
-    {
+    if (Math.random() > .98) {
         self.dir = !self.dir;
     }
 
 
-    moveDelta += (self.dir ? timeStep * 4 : -timeStep * 4);    
+    moveDelta += (self.dir ? timeStep * 4 : -timeStep * 4);
 
     pos = [self.spawnPosition[0], self.spawnPosition[1]];
     pos[1] += Math.sin(moveDelta) * .1;
     node.position2D = pos;
 
-}
-
+}

+ 66 - 0
SpaceGame/Resources/Components/Explosion.js

@@ -0,0 +1,66 @@
+
+var game = Atomic.game;
+var node = self.node;
+var cache = game.cache;
+
+var expSheet = cache.getResource("SpriteSheet2D", "Sprites/explosions_sheet.xml");
+var boomSound = cache.getResource("Sound", "Sounds/boom" + Math.round(Math.random(0, 1)) + ".wav");
+
+
+var sprites = [];
+var frame = 0;
+var frameTime = 0;
+
+self.init = function(spawnPosition) {
+
+    self.spawnPosition = spawnPosition;
+
+}
+
+// using start to initialize the script component
+function start() {
+
+    var i = Math.round(Math.random() * 7);
+
+    for (var j = 0; j < 16; j++)
+    {
+        sprites.push(expSheet.getSprite(i + "_" + j));
+    }
+
+    // add a sprite component to our node
+    var sprite2D = self.sprite2D = node.createComponent("StaticSprite2D");
+    sprite2D.blendMode = Atomic.BLEND_ADDALPHA
+    sprite2D.sprite = sprites[0];
+    node.position2D =  self.spawnPosition;
+    node.scale2D = [1.5, 1.5];
+    sprite2D.orderInLayer = 200;
+
+    self.soundSource = node.createComponent("SoundSource");
+    self.soundSource.soundType = Atomic.SOUND_EFFECT;
+    self.soundSource.gain;
+
+    self.soundSource.play(boomSound);
+
+
+}
+
+// update function called per frame with delta time
+function update(timeStep) {
+
+    frameTime += timeStep;
+    if (frameTime > .05)
+    {
+        frameTime = 0;
+        frame++;
+        if (frame == 16)
+        {
+            Atomic.destroy(node);
+            return;
+        }
+
+        self.sprite2D.sprite = sprites[frame];
+    }
+
+}
+
+

+ 25 - 8
SpaceGame/Resources/Components/SpaceGame.js

@@ -1,4 +1,3 @@
-
 var game = Atomic.game;
 var scene = game.scene;
 
@@ -13,6 +12,10 @@ var enemyBaseNode = scene.createChild("EnemyBaseNode");
 var enemyBasePosX = 0;
 self.enemies = [];
 
+self.random = function random(min, max) { 
+    return Math.random() * (max - min) + min; 
+}
+
 self.spawnBullet = function(pos, isPlayer) {
 
     var bulletNode = scene.createChild("Bullet");
@@ -20,15 +23,29 @@ self.spawnBullet = function(pos, isPlayer) {
     bullet.init(isPlayer, pos);
 }
 
+self.removeEnemy = function(enemy) {
+
+    self.enemies.splice(self.enemies.indexOf(enemy), 1);
+    Atomic.destroy(enemy.node);
+    return;
+    
+}
+
+self.capitalShipDestroyed = function() {
+
+    Atomic.destroy(self.capitalShipNode);
+    self.capitalShipNode = self.capitalShip = null;
+
+}
+
 function spawnSpace() {
 
     var spaceNode = scene.createChild("Space");
     spaceNode.createJSComponent("Space");
 
-}    
+}
 
-function spawnEnemies()
-{
+function spawnEnemies() {
 
     self.capitalShipNode = scene.createChild("CapitalShip");
     self.capitalShip = self.capitalShipNode.createJSComponent("CapitalShip");
@@ -87,14 +104,14 @@ function spawnPlayer() {
 
     self.playerNode = scene.createChild("Player");
     self.player = self.playerNode.createJSComponent("Player");
-}    
+}
 
 
 function start() {
 
-	spawnSpace();
-	spawnPlayer();    
-	spawnEnemies();
+    spawnSpace();
+    spawnPlayer();
+    spawnEnemies();
 }
 
 

+ 0 - 0
SpaceGame/Resources/Script/Main.js → SpaceGame/Resources/Scripts/main.js