Browse Source

More SpaceGame updates

Josh Engebretson 11 years ago
parent
commit
b9a5cbedd3

+ 55 - 0
SpaceGame/Resources/Components/AI.js

@@ -0,0 +1,55 @@
+var game = Atomic.game;
+var node = self.node;
+
+self.canMove = false;
+self.allowShoot = true;
+self.shootDelta = 0;
+
+function start() {
+
+
+}
+
+function update(timeStep) {
+
+    if (SpaceGame.gameOver)
+        return;
+
+    var pos = node.worldPosition2D;
+    var ppos = SpaceGame.playerNode.worldPosition2D;
+
+    if (self.canMove) {
+
+        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;
+        }
+    }
+
+    if (self.shootDelta > 0) {
+    
+        self.shootDelta -= timeStep;
+        
+        if (self.shootDelta < 0)
+            self.shootDelta = 0;
+
+        return;
+    }
+
+    if (Math.abs(pos[0] - ppos[0]) < .25) {
+    
+        self.shootDelta = 0.5;            
+
+        if (Math.random() > .1)
+            return;
+
+        var pos = node.worldPosition2D;
+        pos[1] -= .25;
+        SpaceGame.spawnBullet(pos, false);
+    }
+
+}

+ 38 - 9
SpaceGame/Resources/Components/Bullet.js

@@ -13,7 +13,7 @@ self.init = function(isPlayer, spawnPosition) {
     if (self.isPlayer)
     if (self.isPlayer)
         sprite2D.sprite = game.getSprite2D("Sprites/blue_beam.png");
         sprite2D.sprite = game.getSprite2D("Sprites/blue_beam.png");
     else
     else
-        sprite2D.sprite = game.getSprite2D("Sprite2D", "Sprites/green_beam.png");
+        sprite2D.sprite = game.getSprite2D("Sprites/green_beam.png");
 
 
     sprite2D.blendMode = Atomic.BLEND_ADDALPHA;
     sprite2D.blendMode = Atomic.BLEND_ADDALPHA;
 
 
@@ -33,6 +33,31 @@ self.init = function(isPlayer, spawnPosition) {
 function start() {
 function start() {
 
 
 
 
+}
+
+function updateEnemyBullet() {
+
+    var bpos = node.position2D;
+
+    // off the bottom of the screen
+    if (bpos[1] < -SpaceGame.halfHeight) {
+        return true;
+    }
+
+    if (SpaceGame.player) {
+
+        var epos = SpaceGame.player.node.worldPosition2D;
+
+        if (Math.abs(epos[0] - bpos[0]) < 0.25 &&
+            Math.abs(epos[1] - bpos[1]) < 0.25) {
+
+            SpaceGame.player.onHit();
+
+            return true;
+        }
+
+    }
+
 }
 }
 
 
 function updatePlayerBullet() {
 function updatePlayerBullet() {
@@ -52,24 +77,24 @@ function updatePlayerBullet() {
 
 
         if (Math.abs(epos[0] - bpos[0]) < 0.25 &&
         if (Math.abs(epos[0] - bpos[0]) < 0.25 &&
             Math.abs(epos[1] - bpos[1]) < 0.25) {
             Math.abs(epos[1] - bpos[1]) < 0.25) {
-            
+
             enemy.onHit();
             enemy.onHit();
 
 
             return true;
             return true;
         }
         }
-        
+
         if (SpaceGame.capitalShip) {
         if (SpaceGame.capitalShip) {
-            
+
             var epos = SpaceGame.capitalShip.node.worldPosition2D;
             var epos = SpaceGame.capitalShip.node.worldPosition2D;
-            
+
             if (Math.abs(epos[0] - bpos[0]) < 0.75 &&
             if (Math.abs(epos[0] - bpos[0]) < 0.75 &&
                 Math.abs(epos[1] - bpos[1]) < 0.75) {
                 Math.abs(epos[1] - bpos[1]) < 0.75) {
-                
+
                 SpaceGame.capitalShip.onHit(bpos);
                 SpaceGame.capitalShip.onHit(bpos);
-    
+
                 return true;
                 return true;
             }
             }
-                        
+
         }
         }
 
 
     }
     }
@@ -85,7 +110,11 @@ function update(timeStep) {
         if (updatePlayerBullet()) {
         if (updatePlayerBullet()) {
             Atomic.destroy(node);
             Atomic.destroy(node);
         }
         }
-
+    } else {
+        if (updateEnemyBullet()) {
+            Atomic.destroy(node);
+        }
     }
     }
 
 
+
 }
 }

+ 7 - 16
SpaceGame/Resources/Components/CapitalShip.js

@@ -22,6 +22,7 @@ self.onHit = function(pos) {
     self.health--;
     self.health--;
     if (!self.health) {
     if (!self.health) {
         die();
         die();
+        SpaceGame.win();
     }
     }
 
 
 }
 }
@@ -50,6 +51,12 @@ function die() {
 // using start to initialize the script component
 // using start to initialize the script component
 function start() {
 function start() {
 
 
+    // install AI
+    var ai = node.createJSComponent("AI");
+    ai.canMove = true;
+    
+
+
     var spaceSheet = game.getSpriteSheet("Sprites/spacegame_sheet.xml");
     var spaceSheet = game.getSpriteSheet("Sprites/spacegame_sheet.xml");
 
 
     // add a sprite component to our node
     // add a sprite component to our node
@@ -65,21 +72,5 @@ function start() {
 // update function called per frame with delta time
 // update function called per frame with delta time
 function update(timeStep) {
 function update(timeStep) {
 
 
-    var pos = node.position2D;
-    var ppos = SpaceGame.playerNode.position2D;
-
-    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);
-
-    }
-
-
 
 
 }
 }

+ 3 - 7
SpaceGame/Resources/Components/Enemy.js

@@ -19,6 +19,9 @@ self.onHit = function() {
 
 
 function start() {
 function start() {
 
 
+    // install AI
+    node.createJSComponent("AI");
+
     var spaceSheet = game.getSpriteSheet("Sprites/spacegame_sheet.xml");
     var spaceSheet = game.getSpriteSheet("Sprites/spacegame_sheet.xml");
 
 
     // add a sprite component to our node
     // add a sprite component to our node
@@ -41,17 +44,10 @@ function update(timeStep) {
     var pos = node.position2D;
     var pos = node.position2D;
     var ppos = SpaceGame.playerNode.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;
         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 = [self.spawnPosition[0], self.spawnPosition[1]];

+ 78 - 0
SpaceGame/Resources/Components/HUD.js

@@ -0,0 +1,78 @@
+
+var game = Atomic.game;
+var ui = game.ui;
+var root = ui.getRoot();
+
+var uiStyle = game.cache.getResource("XMLFile", "UI/DefaultStyle.xml");
+root.defaultStyle = uiStyle;
+
+var scoreText = new Atomic.Text();
+
+scoreText.text = "Score: 0";
+var font = game.cache.getResource("Font", "Fonts/Anonymous Pro.ttf");
+
+scoreText.setFont(font, 24);
+scoreText.color = [0, 1, 0, 1];
+
+scoreText.horizontalAlignment = Atomic.HA_RIGHT;
+scoreText.verticalAlignment = Atomic.VA_TOP;
+root.addChild(scoreText);
+
+var titleText = new Atomic.Text();
+
+titleText.text = "Atomic Space Game";
+
+titleText.setFont(font, 18);
+titleText.color = [0, 1, 0, 1];
+
+titleText.horizontalAlignment = Atomic.HA_LEFT;
+titleText.verticalAlignment = Atomic.VA_TOP;
+root.addChild(titleText);
+
+var healthText = new Atomic.Text();
+
+healthText.text = "Health: 10";
+
+healthText.setFont(font, 18);
+healthText.color = [0, 1, 0, 1];
+
+healthText.horizontalAlignment = Atomic.HA_RIGHT;
+healthText.verticalAlignment = Atomic.VA_BOTTOM;
+root.addChild(healthText);
+
+var gameText = new Atomic.Text();
+
+gameText.setFont(font, 40);
+gameText.color = [0, 1, 0, 1];
+
+gameText.horizontalAlignment = Atomic.HA_CENTER;
+gameText.verticalAlignment = Atomic.VA_CENTER;
+root.addChild(gameText);
+
+
+self.updateScore = function (value) {
+
+    scoreText.text = "Score: " + value;
+
+}
+
+self.updateHealth = function (value) {
+
+    healthText.text = "Health: " + value;
+
+}
+
+self.updateGameText = function (text) {
+
+    gameText.text = text;
+
+}
+
+function start() {
+
+}
+
+function update(timeStep) {
+
+}
+

+ 33 - 15
SpaceGame/Resources/Components/Player.js

@@ -7,10 +7,30 @@ self.allowMove = true;
 self.allowShoot = true;
 self.allowShoot = true;
 self.shootDelta = 0;
 self.shootDelta = 0;
 
 
-function doShooting(timeStep)
-{
+self.health = 10;
+
+self.onHit = function() {
+
+    var expNode = game.scene.createChild("Explosion");
+    var exp = expNode.createJSComponent("Explosion");
+    exp.init(node.worldPosition2D);
+
+    self.health--;
+    
+    SpaceGame.hud.updateHealth(self.health);
+    
+    if (self.health == 0) {
+    
+        SpaceGame.lose();
+    
+    }
+    
+
+}
+
+function doShooting(timeStep) {
     if (self.shootDelta > 0) {
     if (self.shootDelta > 0) {
-    	
+
         self.shootDelta -= timeStep;
         self.shootDelta -= timeStep;
         if (self.shootDelta < 0)
         if (self.shootDelta < 0)
             self.shootDelta = 0;
             self.shootDelta = 0;
@@ -30,8 +50,7 @@ function doShooting(timeStep)
 
 
 }
 }
 
 
-function moveShip(timeStep)
-{
+function moveShip(timeStep) {
     var speed = 3.0 * timeStep;
     var speed = 3.0 * timeStep;
 
 
     var pos = node.position2D;
     var pos = node.position2D;
@@ -39,7 +58,7 @@ function moveShip(timeStep)
     var left = false;
     var left = false;
     var right = false;
     var right = false;
 
 
-    
+
     if (input.getKeyDown(Atomic.KEY_A) || input.getKeyDown(Atomic.KEY_LEFT))
     if (input.getKeyDown(Atomic.KEY_A) || input.getKeyDown(Atomic.KEY_LEFT))
         pos[0] -= speed;
         pos[0] -= speed;
 
 
@@ -59,23 +78,22 @@ function moveShip(timeStep)
 
 
 function start() {
 function start() {
 
 
-	var spaceSheet = game.getSpriteSheet("Sprites/spacegame_sheet.xml");
+    var spaceSheet = game.getSpriteSheet("Sprites/spacegame_sheet.xml");
 
 
     var sprite2D = node.createComponent("StaticSprite2D");
     var sprite2D = node.createComponent("StaticSprite2D");
     sprite2D.sprite = spaceSheet.getSprite("spaceship_mantis");
     sprite2D.sprite = spaceSheet.getSprite("spaceship_mantis");
-    sprite2D.blendMode = Atomic.BLEND_ALPHA;    
-    
-    node.position2D =  [0, -SpaceGame.halfHeight + 1];
+    sprite2D.blendMode = Atomic.BLEND_ALPHA;
+
+    node.position2D = [0, -SpaceGame.halfHeight + 1];
 
 
 }
 }
 
 
 function update(timeStep) {
 function update(timeStep) {
-
-	if (self.allowShoot)
-		doShooting(timeStep);
+    
+    if (self.allowShoot)
+        doShooting(timeStep);
 
 
     if (self.allowMove)
     if (self.allowMove)
         moveShip(timeStep);
         moveShip(timeStep);
 
 
-}
-
+}

+ 30 - 3
SpaceGame/Resources/Components/SpaceGame.js

@@ -10,10 +10,14 @@ self.halfHeight = game.graphics.height * Atomic.PIXEL_SIZE * 0.5;
 var enemyBaseDir = false;
 var enemyBaseDir = false;
 var enemyBaseNode = scene.createChild("EnemyBaseNode");
 var enemyBaseNode = scene.createChild("EnemyBaseNode");
 var enemyBasePosX = 0;
 var enemyBasePosX = 0;
+
+var score = 0;
+
 self.enemies = [];
 self.enemies = [];
+self.gameOver = false;
 
 
-self.random = function random(min, max) { 
-    return Math.random() * (max - min) + min; 
+self.random = function random(min, max) {
+    return Math.random() * (max - min) + min;
 }
 }
 
 
 self.spawnBullet = function(pos, isPlayer) {
 self.spawnBullet = function(pos, isPlayer) {
@@ -25,14 +29,22 @@ self.spawnBullet = function(pos, isPlayer) {
 
 
 self.removeEnemy = function(enemy) {
 self.removeEnemy = function(enemy) {
 
 
+    score += 10;
+
+    self.hud.updateScore(score);
+
     self.enemies.splice(self.enemies.indexOf(enemy), 1);
     self.enemies.splice(self.enemies.indexOf(enemy), 1);
     Atomic.destroy(enemy.node);
     Atomic.destroy(enemy.node);
     return;
     return;
-    
+
 }
 }
 
 
 self.capitalShipDestroyed = function() {
 self.capitalShipDestroyed = function() {
 
 
+    score += 1000;
+
+    self.hud.updateScore(score);
+
     Atomic.destroy(self.capitalShipNode);
     Atomic.destroy(self.capitalShipNode);
     self.capitalShipNode = self.capitalShip = null;
     self.capitalShipNode = self.capitalShip = null;
 
 
@@ -99,6 +111,19 @@ function updateEnemies(timeStep) {
 
 
 }
 }
 
 
+self.win = function() {
+
+    self.hud.updateGameText("YOU WIN!!!!");
+    self.gameOver = true;
+
+}
+
+self.lose = function() {
+
+    self.hud.updateGameText("YOU LOSE!!!!");
+    self.gameOver = true;
+
+}
 
 
 function spawnPlayer() {
 function spawnPlayer() {
 
 
@@ -109,6 +134,8 @@ function spawnPlayer() {
 
 
 function start() {
 function start() {
 
 
+    self.hud = scene.createJSComponent("HUD");
+
     spawnSpace();
     spawnSpace();
     spawnPlayer();
     spawnPlayer();
     spawnEnemies();
     spawnEnemies();