Browse Source

Move NewSpaceGame -> SpaceGame

Josh Engebretson 10 years ago
parent
commit
6078ed998d
100 changed files with 413 additions and 1382 deletions
  1. 0 9
      NewSpaceGame/NewSpaceGame.atomic
  2. 0 59
      NewSpaceGame/Resources/Components/AI.js
  3. 0 123
      NewSpaceGame/Resources/Components/Bullet.js
  4. 0 86
      NewSpaceGame/Resources/Components/CapitalShip.js
  5. 0 78
      NewSpaceGame/Resources/Components/Enemy.js
  6. 0 57
      NewSpaceGame/Resources/Components/Explosion.js
  7. 0 43
      NewSpaceGame/Resources/Components/HUD.js
  8. 0 103
      NewSpaceGame/Resources/Components/Player.js
  9. 0 209
      NewSpaceGame/Resources/Components/SpaceGame.js
  10. 0 1
      NewSpaceGame/Resources/Components/TouchInput.js
  11. BIN
      NewSpaceGame/Resources/Music/battle.ogg
  12. 0 40
      NewSpaceGame/Resources/Scripts/main.js
  13. BIN
      NewSpaceGame/Resources/Sounds/boom0.wav
  14. BIN
      NewSpaceGame/Resources/Sounds/boom1.wav
  15. BIN
      NewSpaceGame/Resources/Sounds/laser01.wav
  16. BIN
      NewSpaceGame/Resources/Sounds/laser02.wav
  17. BIN
      NewSpaceGame/Resources/Sprites/blue_beam.png
  18. BIN
      NewSpaceGame/Resources/Sprites/blue_star.png
  19. BIN
      NewSpaceGame/Resources/Sprites/explosions_sheet.png
  20. 0 134
      NewSpaceGame/Resources/Sprites/explosions_sheet.xml
  21. BIN
      NewSpaceGame/Resources/Sprites/green_beam.png
  22. BIN
      NewSpaceGame/Resources/Sprites/space_background.png
  23. BIN
      NewSpaceGame/Resources/Sprites/spacegame_sheet.png
  24. 0 11
      NewSpaceGame/Resources/Sprites/spacegame_sheet.xml
  25. BIN
      NewSpaceGame/Resources/Sprites/spaceship_cricket.png
  26. BIN
      NewSpaceGame/Resources/Sprites/spaceship_flea.png
  27. BIN
      NewSpaceGame/Resources/Sprites/spaceship_locust.png
  28. BIN
      NewSpaceGame/Resources/Sprites/spaceship_louse.png
  29. BIN
      NewSpaceGame/Resources/Sprites/spaceship_mantis.png
  30. BIN
      NewSpaceGame/Resources/Sprites/spaceship_scarab.png
  31. 0 25
      NewSpaceGame/Resources/UI/Hud.ui.txt
  32. 0 0
      SpaceGame/.gitignore
  33. 0 0
      SpaceGame/Resources.asset
  34. 0 0
      SpaceGame/Resources/Components.asset
  35. 34 30
      SpaceGame/Resources/Components/AI.js
  36. 0 0
      SpaceGame/Resources/Components/AI.js.asset
  37. 49 47
      SpaceGame/Resources/Components/Bullet.js
  38. 0 0
      SpaceGame/Resources/Components/Bullet.js.asset
  39. 49 39
      SpaceGame/Resources/Components/CapitalShip.js
  40. 0 0
      SpaceGame/Resources/Components/CapitalShip.js.asset
  41. 42 21
      SpaceGame/Resources/Components/Enemy.js
  42. 0 0
      SpaceGame/Resources/Components/Enemy.js.asset
  43. 28 37
      SpaceGame/Resources/Components/Explosion.js
  44. 0 0
      SpaceGame/Resources/Components/Explosion.js.asset
  45. 25 26
      SpaceGame/Resources/Components/HUD.js
  46. 0 0
      SpaceGame/Resources/Components/HUD.js.asset
  47. 38 34
      SpaceGame/Resources/Components/Player.js
  48. 0 0
      SpaceGame/Resources/Components/Player.js.asset
  49. 0 27
      SpaceGame/Resources/Components/Space.js
  50. 0 0
      SpaceGame/Resources/Components/SpaceBackground.js
  51. 0 0
      SpaceGame/Resources/Components/SpaceBackground.js.asset
  52. 128 77
      SpaceGame/Resources/Components/SpaceGame.js
  53. 0 0
      SpaceGame/Resources/Components/SpaceGame.js.asset
  54. 0 18
      SpaceGame/Resources/Components/TouchInput.js
  55. 0 0
      SpaceGame/Resources/Components/TouchInput.js.asset
  56. 0 0
      SpaceGame/Resources/Data.asset
  57. 0 0
      SpaceGame/Resources/Data/RenderPath.xml
  58. 0 28
      SpaceGame/Resources/Data/ScreenJoystick.xml
  59. 0 0
      SpaceGame/Resources/Modules.asset
  60. 0 0
      SpaceGame/Resources/Modules/Game.js
  61. 0 0
      SpaceGame/Resources/Modules/Game.js.asset
  62. 0 0
      SpaceGame/Resources/Modules/gl-matrix.js
  63. 0 0
      SpaceGame/Resources/Modules/gl-matrix.js.asset
  64. 0 0
      SpaceGame/Resources/Music.asset
  65. 0 0
      SpaceGame/Resources/Music/battle.ogg.asset
  66. 0 0
      SpaceGame/Resources/Scripts.asset
  67. 20 6
      SpaceGame/Resources/Scripts/main.js
  68. 0 0
      SpaceGame/Resources/Scripts/main.js.asset
  69. 0 0
      SpaceGame/Resources/Scripts/precache.js
  70. 0 0
      SpaceGame/Resources/Scripts/precache.js.asset
  71. 0 0
      SpaceGame/Resources/Scripts/utils.js
  72. 0 0
      SpaceGame/Resources/Scripts/utils.js.asset
  73. 0 14
      SpaceGame/Resources/Skin/skin.ui.txt
  74. BIN
      SpaceGame/Resources/Skin/spaceship.png
  75. BIN
      SpaceGame/Resources/Skin/window.png
  76. 0 0
      SpaceGame/Resources/Sounds.asset
  77. 0 0
      SpaceGame/Resources/Sounds/boom0.wav.asset
  78. 0 0
      SpaceGame/Resources/Sounds/boom1.wav.asset
  79. 0 0
      SpaceGame/Resources/Sounds/laser01.wav.asset
  80. 0 0
      SpaceGame/Resources/Sounds/laser02.wav.asset
  81. 0 0
      SpaceGame/Resources/Sprites.asset
  82. 0 0
      SpaceGame/Resources/Sprites/blue_beam.png.asset
  83. 0 0
      SpaceGame/Resources/Sprites/blue_star.png.asset
  84. 0 0
      SpaceGame/Resources/Sprites/explosions_sheet.png.asset
  85. 0 0
      SpaceGame/Resources/Sprites/green_beam.png.asset
  86. 0 0
      SpaceGame/Resources/Sprites/space_background.png.asset
  87. 0 0
      SpaceGame/Resources/Sprites/spacegame_sheet.png.asset
  88. 0 0
      SpaceGame/Resources/Sprites/spaceship_cricket.png.asset
  89. 0 0
      SpaceGame/Resources/Sprites/spaceship_flea.png.asset
  90. 0 0
      SpaceGame/Resources/Sprites/spaceship_locust.png.asset
  91. 0 0
      SpaceGame/Resources/Sprites/spaceship_louse.png.asset
  92. 0 0
      SpaceGame/Resources/Sprites/spaceship_mantis.png.asset
  93. 0 0
      SpaceGame/Resources/Sprites/spaceship_scarab.png.asset
  94. 0 0
      SpaceGame/Resources/UI.asset
  95. 0 0
      SpaceGame/Resources/UI/Hud.ui.txt.asset
  96. 0 0
      SpaceGame/Resources/UI/Skin.asset
  97. 0 0
      SpaceGame/Resources/UI/Skin/Override.asset
  98. 0 0
      SpaceGame/Resources/UI/Skin/Override/skin.ui.txt
  99. 0 0
      SpaceGame/Resources/UI/Skin/Override/skin.ui.txt.asset
  100. 0 0
      SpaceGame/Resources/UI/Skin/Override/spaceship.png

+ 0 - 9
NewSpaceGame/NewSpaceGame.atomic

@@ -1,9 +0,0 @@
-{
-   "version": 1,
-   "project": {
-      "version": "1.0.0"
-   },
-   "platforms": [
-      "mac", "windows"
-   ]
-}

+ 0 - 59
NewSpaceGame/Resources/Components/AI.js

@@ -1,59 +0,0 @@
-exports.component = function(self) {
-
-  var game = Atomic.game;
-  var node = self.node;
-
-  self.canMove = false;
-  self.allowShoot = true;
-  self.shootDelta = 0;
-
-  self.start = function() {
-
-
-  }
-
-  self.update = function(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);
-    }
-
-  }
-
-}

+ 0 - 123
NewSpaceGame/Resources/Components/Bullet.js

@@ -1,123 +0,0 @@
-exports.component = function(self) {
-
-  var game = Atomic.game;
-  var node = self.node;
-
-  self.isPlayer = false;
-
-  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)
-      sprite2D.sprite = game.getSprite2D("Sprites/blue_beam.png");
-    else
-      sprite2D.sprite = game.getSprite2D("Sprites/green_beam.png");
-
-    sprite2D.blendMode = Atomic.BLEND_ADDALPHA;
-
-    self.soundSource = node.createComponent("SoundSource");
-    self.soundSource.soundType = Atomic.SOUND_EFFECT;
-    self.soundSource.gain = 0.75;
-    self.soundSource.play(laserSound);
-
-    node.position2D = spawnPosition;
-
-    if (!self.isPlayer) {
-      node.roll(180);
-    }
-
-  }
-
-  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() {
-
-    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 epos = enemy.node.worldPosition2D;
-
-      if (Math.abs(epos[0] - bpos[0]) < 0.25 &&
-        Math.abs(epos[1] - bpos[1]) < 0.25) {
-
-        enemy.onHit();
-        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;
-      }
-
-    }
-
-  }
-
-  self.update = function(timeStep) {
-
-    if (!SpaceGame) {
-      Atomic.destroy(node);
-      return;
-    }
-
-    var speed = self.isPlayer ? 8 : 5;
-    speed *= timeStep;
-    node.translate2D([0, speed]);
-
-    if (self.isPlayer) {
-      if (updatePlayerBullet()) {
-        Atomic.destroy(node);
-      }
-    } else {
-      if (updateEnemyBullet()) {
-        Atomic.destroy(node);
-      }
-    }
-
-  }
-
-}

+ 0 - 86
NewSpaceGame/Resources/Components/CapitalShip.js

@@ -1,86 +0,0 @@
-exports.component = function(self) {
-
-  var game = Atomic.game;
-  var node = self.node;
-  var scene = SpaceGame.myscene;
-
-  self.allowShoot = true;
-  self.shootDelta = 0;
-
-  self.health = 10;
-
-  self.onHit = function(pos) {
-
-    var expNode = scene.createChild("Explosion");
-    var exp = expNode.createJSComponent("Components/Explosion.js", {
-      spawnPosition: node.worldPosition2D
-    });
-
-    exp.node.scale2D = [2.0, 2.0];
-
-    self.health--;
-    if (!self.health) {
-      die();
-      SpaceGame.win();
-    }
-
-  }
-
-  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("Components/Explosion.js", {
-        spawnPosition: node.worldPosition2D
-      });
-
-      var randomSize = SpaceGame.random(4, 8);
-      exp.node.scale2D = [randomSize, randomSize];
-    }
-
-  }
-
-  // using start to initialize the script component
-  self.start = function() {
-
-    // install AI
-    var ai = node.createJSComponent("Components/AI.js");
-    ai.canMove = true;
-
-    var spaceSheet = game.getSpriteSheet("Sprites/spacegame_sheet.xml");
-
-    // add a sprite component to our node
-    var sprite2D = self.sprite2D = node.createComponent("StaticSprite2D");
-    sprite2D.blendMode = Atomic.BLEND_ALPHA;
-    sprite2D.sprite = spaceSheet.getSprite("spaceship_locust");
-    sprite2D.alpha = 0.0;
-
-    node.position2D = [-4, SpaceGame.halfHeight - 1];
-    node.roll(180);
-
-  }
-
-  // update function called per frame with delta time
-  self.update = function(timeStep) {
-
-    // fade in
-    var alpha = self.sprite2D.alpha;
-
-    if (alpha < 1) {
-      alpha += timeStep * 1.5;
-      if (alpha > 1)
-        alpha = 1;
-
-      self.sprite2D.alpha = alpha;
-
-    }
-
-  }
-
-}

+ 0 - 78
NewSpaceGame/Resources/Components/Enemy.js

@@ -1,78 +0,0 @@
-exports.component = function(self) {
-
-  var game = Atomic.game;
-  var node = self.node;
-
-  self.allowShoot = true;
-  self.shootDelta = 0;
-
-  var moveDelta = 0;
-
-  var dead = false;
-
-  self.onHit = function() {
-
-    var expNode = SpaceGame.myscene.createChild("Explosion");
-
-    var exp = expNode.createJSComponent("Components/Explosion.js", {
-      spawnPosition: node.worldPosition2D
-    });
-
-    SpaceGame.removeEnemy(self);
-
-  }
-
-  self.start = function() {
-
-    // install AI
-    node.createJSComponent("Components/AI.js");
-
-    var spaceSheet = game.getSpriteSheet("Sprites/spacegame_sheet.xml");
-
-    // add a sprite component to our node
-    var sprite2D = self.sprite2D = node.createComponent("StaticSprite2D");
-    sprite2D.blendMode = Atomic.BLEND_ALPHA;
-    sprite2D.sprite = spaceSheet.getSprite(self.spriteName);
-
-    node.position2D = self.spawnPosition;
-    node.roll(180);
-    node.scale2D = [0.65, 0.65];
-
-    sprite2D.alpha = 0.0;
-
-    self.dir = (Math.random() > .5);
-
-
-  }
-
-  // update function called per frame with delta time
-  self.update = function(timeStep) {
-
-    // fade in
-    var alpha = self.sprite2D.alpha;
-
-    if (alpha < 1) {
-      alpha += timeStep * 1.5;
-      if (alpha > 1)
-        alpha = 1;
-
-      self.sprite2D.alpha = alpha;
-
-    }
-
-    var pos = node.position2D;
-    var ppos = SpaceGame.playerNode.position2D;
-
-    if (Math.random() > .98) {
-      self.dir = !self.dir;
-    }
-
-    moveDelta += (self.dir ? timeStep * 4 : -timeStep * 4);
-
-    pos = [self.spawnPosition[0], self.spawnPosition[1]];
-    pos[1] += Math.sin(moveDelta) * .1;
-    node.position2D = pos;
-
-  }
-
-}

+ 0 - 57
NewSpaceGame/Resources/Components/Explosion.js

@@ -1,57 +0,0 @@
-exports.component = function(self) {
-
-  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;
-
-  // using start to initialize the script component
-  self.start = function() {
-
-    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
-  self.update = function(timeStep) {
-
-    frameTime += timeStep;
-    if (frameTime > .05) {
-      frameTime = 0;
-      frame++;
-      if (frame == 16) {
-        Atomic.destroy(node);
-        return;
-      }
-
-      self.sprite2D.sprite = sprites[frame];
-    }
-
-  }
-
-}

+ 0 - 43
NewSpaceGame/Resources/Components/HUD.js

@@ -1,43 +0,0 @@
-exports.component = function(self) {
-
-  var game = Atomic.game;
-  var view = game.uiView;
-  var UI = Atomic.UI;
-  var UIButton = Atomic.UIButton;
-  var UITextField = Atomic.UITextField;
-  var UILayout = Atomic.UILayout;
-
-  var layout = new Atomic.UIWidget();
-  layout.load("UI/Hud.ui.txt");
-  layout.setSize(game.graphics.width, game.graphics.height);
-  view.addChild(layout);
-
-  SpaceGame.viewport.rect = layout.getWidget("viewport").rect;
-
-  self.cleanup = function() {
-    view.removeChild(layout);
-  }
-
-  var scoretext = layout.getWidget("scoretext");
-
-  //UI.debugShowSettingsWindow(view);
-
-  self.updateScore = function(value) {
-
-    scoretext.text = "Score: " + value;
-
-  }
-
-  self.updateHealth = function(value) {
-
-    //healthText.text = "Health: " + value;
-
-  }
-
-  self.updateGameText = function(text) {
-
-    //gameText.text = text;
-
-  }
-
-}

+ 0 - 103
NewSpaceGame/Resources/Components/Player.js

@@ -1,103 +0,0 @@
-exports.component = function(self) {
-
-  var game = Atomic.game;
-  var input = game.input;
-
-  var node = self.node;
-
-  self.allowMove = true;
-  self.allowShoot = true;
-  self.shootDelta = 0;
-
-  self.health = 10;
-
-  self.onHit = function() {
-
-    var expNode = SpaceGame.myscene.createChild("Explosion");
-    var exp = expNode.createJSComponent("Components/Explosion.js", {
-      spawnPosition: node.worldPosition2D
-    });
-
-    self.health--;
-
-    SpaceGame.hud.updateHealth(self.health);
-
-    if (self.health == 0) {
-
-      SpaceGame.lose();
-
-    }
-
-  }
-
-  function doShooting(timeStep) {
-    if (self.shootDelta > 0) {
-
-      self.shootDelta -= timeStep;
-      if (self.shootDelta < 0)
-        self.shootDelta = 0;
-
-      return;
-    }
-
-    if (!input.getKeyDown(Atomic.KEY_W) && !input.getKeyDown(Atomic.KEY_UP) && !input.getKeyDown(Atomic.KEY_SPACE))
-      return;
-
-    self.shootDelta = 0.15;
-
-    var pos = node.position2D;
-    pos[1] += .5;
-
-    SpaceGame.spawnBullet(pos, true);
-
-  }
-
-  function moveShip(timeStep) {
-    var speed = 3.0 * timeStep;
-
-    var pos = node.position2D;
-
-    var left = false;
-    var right = false;
-
-
-    if (input.getKeyDown(Atomic.KEY_A) || input.getKeyDown(Atomic.KEY_LEFT))
-      pos[0] -= speed;
-
-    if (input.getKeyDown(Atomic.KEY_D) || input.getKeyDown(Atomic.KEY_RIGHT))
-      pos[0] += speed;
-
-    if (pos[0] < -SpaceGame.halfWidth + 2)
-      pos[0] = -SpaceGame.halfWidth + 2;
-
-    if (pos[0] > SpaceGame.halfWidth - 2)
-      pos[0] = SpaceGame.halfWidth - 2;
-
-
-    node.position2D = pos;
-
-  }
-
-  self.start = function() {
-
-    var spaceSheet = game.getSpriteSheet("Sprites/spacegame_sheet.xml");
-
-    var sprite2D = node.createComponent("StaticSprite2D");
-    sprite2D.sprite = spaceSheet.getSprite("spaceship_mantis");
-    sprite2D.blendMode = Atomic.BLEND_ALPHA;
-
-    node.position2D = [0, -SpaceGame.halfHeight + .65];
-
-  }
-
-  self.update = function(timeStep) {
-
-    if (self.allowShoot)
-      doShooting(timeStep);
-
-    if (self.allowMove)
-      moveShip(timeStep);
-
-  }
-
-}

+ 0 - 209
NewSpaceGame/Resources/Components/SpaceGame.js

@@ -1,209 +0,0 @@
-var UI = require("UI/ui");
-var options = require("UI/options")
-
-exports.component = function(self) {
-
-  var game = Atomic.game;
-
-  // expose ourselves as a global, this is invalid in "use strict"; which perhaps we should be using
-  // to enforce better form
-  SpaceGame = self;
-
-  createScene();
-
-  self.halfWidth = game.graphics.width * Atomic.PIXEL_SIZE * 0.5;
-  self.halfHeight = game.graphics.height * Atomic.PIXEL_SIZE * 0.5;
-
-  var enemyBaseDir = false;
-  var enemyBaseNode = self.myscene.createChild("EnemyBaseNode");
-  var enemyBasePosX = 0;
-
-  var score = 0;
-
-  self.enemies = [];
-  self.gameOver = false;
-
-  self.random = function random(min, max) {
-    return Math.random() * (max - min) + min;
-  }
-
-  self.spawnBullet = function(pos, isPlayer) {
-
-    var bulletNode = self.myscene.createChild("Bullet");
-    var bullet = bulletNode.createJSComponent("Components/Bullet.js");
-    bullet.init(isPlayer, pos);
-  }
-
-  self.removeEnemy = function(enemy) {
-
-    score += 10;
-    self.hud.updateScore(score);
-    self.enemies.splice(self.enemies.indexOf(enemy), 1);
-
-    Atomic.destroy(enemy.node);
-  }
-
-  self.capitalShipDestroyed = function() {
-
-    score += 1000;
-
-    self.hud.updateScore(score);
-
-    Atomic.destroy(self.capitalShipNode);
-    self.capitalShipNode = self.capitalShip = null;
-
-  }
-
-
-  function spawnEnemies() {
-
-    self.capitalShipNode = self.myscene.createChild("CapitalShip");
-    self.capitalShip = self.capitalShipNode.createJSComponent("Components/CapitalShip.js");
-
-    var pos = [0, 0];
-
-    pos[1] = self.halfHeight - 2.5;
-
-    for (var y = 0; y < 2; y++) {
-
-      pos[0] = -4.5;
-
-      for (var x = 0; x < 12; x++) {
-
-        var enemyNode = enemyBaseNode.createChild("Enemy");
-
-        var enemy = enemyNode.createJSComponent("Components/Enemy.js", {
-          spriteName: Math.random() < .85 ? "spaceship_louse" : "spaceship_scarab",
-          spawnPosition: [pos[0], pos[1]]
-        });
-
-        self.enemies.push(enemy);
-
-        pos[0] += 0.75;
-
-      }
-
-      pos[1] -= 0.75;
-
-    }
-
-  }
-
-  function updateEnemies(timeStep) {
-
-    if (!enemyBaseDir)
-      enemyBasePosX += timeStep;
-    else
-      enemyBasePosX -= timeStep;
-
-    var xvalue = 2;
-
-    if (enemyBasePosX > xvalue) {
-      enemyBasePosX = xvalue;
-      enemyBaseDir = !enemyBaseDir;
-    }
-
-    if (enemyBasePosX < -xvalue) {
-      enemyBasePosX = -xvalue;
-      enemyBaseDir = !enemyBaseDir;
-    }
-
-    enemyBaseNode.position2D = [enemyBasePosX, 0];
-
-  }
-
-  self.cleanup = function() {
-
-    game.renderer.setViewport(1, null);
-
-    self.hud.cleanup();
-    Atomic.destroy(self.myscene);
-
-    // our node is in the main scene
-    Atomic.destroy(self.node);
-
-    SpaceGame = null;
-
-
-  }
-
-  self.win = function() {
-
-    self.hud.updateGameText("YOU WIN!!!!");
-    self.gameOver = true;
-    UI.showGameOver();
-    //self.cleanup();
-
-  }
-
-  self.lose = function() {
-
-    self.hud.updateGameText("YOU LOSE!!!!");
-    self.gameOver = true;
-    UI.showGameOver();
-    //self.cleanup();
-
-  }
-
-  function spawnPlayer() {
-
-    self.playerNode = self.myscene.createChild("Player");
-    self.player = self.playerNode.createJSComponent("Components/Player.js");
-  }
-
-  function createScene() {
-
-    var scene = new Atomic.Scene();
-    scene.createComponent("Octree");
-
-    var cameraNode = scene.createChild("Camera");
-    cameraNode.position = [0.0, 0.0, -10.0];
-
-    var camera = cameraNode.createComponent("Camera");
-    camera.orthographic = true;
-    camera.orthoSize = game.graphics.height * Atomic.PIXEL_SIZE;
-
-    var viewport = new Atomic.Viewport(scene, camera);
-
-    // assign a render path to our viewport which doesn't clear the screen
-    // so can be used to composite
-    var renderPathXML = game.cache.getResource("XMLFile", "Data/RenderPath.xml");
-    viewport.renderPath = renderPathXML;
-
-    // Example of appending a post process filter
-    if (options.getOptions().blackAndWhite)
-      viewport.renderPath.append(game.cache.getResource("XMLFile", "PostProcess/GreyScale.xml"));
-    if (options.getOptions().blur)
-      viewport.renderPath.append(game.cache.getResource("XMLFile", "PostProcess/Blur.xml"));
-
-
-    game.renderer.setViewport(1, viewport);
-
-    // this is component getScene property (there is no setter on it)
-    // this should be an error, think I saw somewhere you can raise errors on
-    // get/set of a prop when the get/set missing
-    self.myscene = scene;
-    self.cameraNode = cameraNode;
-    self.camera = camera;
-    self.viewport = viewport;
-
-  }
-
-
-  self.start = function() {
-
-    var hudnode = self.myscene.createChild();
-    self.hud = hudnode.createJSComponent("Components/HUD.js");
-
-    spawnPlayer();
-    spawnEnemies();
-
-  }
-
-
-  self.update = function(timeStep) {
-
-    updateEnemies(timeStep);
-
-  }
-}

+ 0 - 1
NewSpaceGame/Resources/Components/TouchInput.js

@@ -1 +0,0 @@
-

BIN
NewSpaceGame/Resources/Music/battle.ogg


+ 0 - 40
NewSpaceGame/Resources/Scripts/main.js

@@ -1,40 +0,0 @@
-
-// This script is the main entry point of the game
-
-require("Game");
-
-// relative require not working for main.js due to how it is being loaded (however, does work elsewhere)
-var precache = require("Scripts/precache");
-var utils = require("Scripts/utils");
-var UI = require("UI/ui");
-
-Atomic.game.init(start, update);
-
-// called at the start of play
-function start() {
-
-	precache.precache(true);
-
-	var game = Atomic.game;
-
-	UI.showMainMenu();
-
-	// create a main 2D scene, which will persist
-	// the space game itself uses a separate scene we can
-	// bring up and tear down
-	game.createScene2D();
-
-	var spaceNode = game.scene.createChild("SpaceBackground");
-	spaceNode.createJSComponent("Components/SpaceBackground.js");
-
-	// play some music!
-	utils.playMusic("Music/battle.ogg");
-
-}
-
-// called per frame
-function update(timeStep) {
-
-  UI.update(timeStep);
-
-}

BIN
NewSpaceGame/Resources/Sounds/boom0.wav


BIN
NewSpaceGame/Resources/Sounds/boom1.wav


BIN
NewSpaceGame/Resources/Sounds/laser01.wav


BIN
NewSpaceGame/Resources/Sounds/laser02.wav


BIN
NewSpaceGame/Resources/Sprites/blue_beam.png


BIN
NewSpaceGame/Resources/Sprites/blue_star.png


BIN
NewSpaceGame/Resources/Sprites/explosions_sheet.png


+ 0 - 134
NewSpaceGame/Resources/Sprites/explosions_sheet.xml

@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Created with TexturePacker http://www.codeandweb.com/texturepacker-->
-<!-- $TexturePacker:SmartUpdate:1a17c841c2e0285d52a986d357f78c54:1/1$ -->
-<TextureAtlas imagePath="explosions_sheet.png">
-    <SubTexture name="0_0" x="0" y="0" width="64" height="64"/>
-    <SubTexture name="0_1" x="64" y="0" width="64" height="64"/>
-    <SubTexture name="0_2" x="128" y="0" width="64" height="64"/>
-    <SubTexture name="0_3" x="192" y="0" width="64" height="64"/>
-    <SubTexture name="0_4" x="256" y="0" width="64" height="64"/>
-    <SubTexture name="0_5" x="320" y="0" width="64" height="64"/>
-    <SubTexture name="0_6" x="384" y="0" width="64" height="64"/>
-    <SubTexture name="0_7" x="448" y="0" width="64" height="64"/>
-    <SubTexture name="0_8" x="512" y="0" width="64" height="64"/>
-    <SubTexture name="0_9" x="576" y="0" width="64" height="64"/>
-    <SubTexture name="0_10" x="640" y="0" width="64" height="64"/>
-    <SubTexture name="0_11" x="704" y="0" width="64" height="64"/>
-    <SubTexture name="0_12" x="768" y="0" width="64" height="64"/>
-    <SubTexture name="0_13" x="832" y="0" width="64" height="64"/>
-    <SubTexture name="0_14" x="896" y="0" width="64" height="64"/>
-    <SubTexture name="0_15" x="960" y="0" width="64" height="64"/>
-    <SubTexture name="1_0" x="0" y="64" width="64" height="64"/>
-    <SubTexture name="1_1" x="64" y="64" width="64" height="64"/>
-    <SubTexture name="1_2" x="128" y="64" width="64" height="64"/>
-    <SubTexture name="1_3" x="192" y="64" width="64" height="64"/>
-    <SubTexture name="1_4" x="256" y="64" width="64" height="64"/>
-    <SubTexture name="1_5" x="320" y="64" width="64" height="64"/>
-    <SubTexture name="1_6" x="384" y="64" width="64" height="64"/>
-    <SubTexture name="1_7" x="448" y="64" width="64" height="64"/>
-    <SubTexture name="1_8" x="512" y="64" width="64" height="64"/>
-    <SubTexture name="1_9" x="576" y="64" width="64" height="64"/>
-    <SubTexture name="1_10" x="640" y="64" width="64" height="64"/>
-    <SubTexture name="1_11" x="704" y="64" width="64" height="64"/>
-    <SubTexture name="1_12" x="768" y="64" width="64" height="64"/>
-    <SubTexture name="1_13" x="832" y="64" width="64" height="64"/>
-    <SubTexture name="1_14" x="896" y="64" width="64" height="64"/>
-    <SubTexture name="1_15" x="960" y="64" width="64" height="64"/>
-    <SubTexture name="2_0" x="0" y="128" width="64" height="64"/>
-    <SubTexture name="2_1" x="64" y="128" width="64" height="64"/>
-    <SubTexture name="2_2" x="128" y="128" width="64" height="64"/>
-    <SubTexture name="2_3" x="192" y="128" width="64" height="64"/>
-    <SubTexture name="2_4" x="256" y="128" width="64" height="64"/>
-    <SubTexture name="2_5" x="320" y="128" width="64" height="64"/>
-    <SubTexture name="2_6" x="384" y="128" width="64" height="64"/>
-    <SubTexture name="2_7" x="448" y="128" width="64" height="64"/>
-    <SubTexture name="2_8" x="512" y="128" width="64" height="64"/>
-    <SubTexture name="2_9" x="576" y="128" width="64" height="64"/>
-    <SubTexture name="2_10" x="640" y="128" width="64" height="64"/>
-    <SubTexture name="2_11" x="704" y="128" width="64" height="64"/>
-    <SubTexture name="2_12" x="768" y="128" width="64" height="64"/>
-    <SubTexture name="2_13" x="832" y="128" width="64" height="64"/>
-    <SubTexture name="2_14" x="896" y="128" width="64" height="64"/>
-    <SubTexture name="2_15" x="960" y="128" width="64" height="64"/>
-    <SubTexture name="3_0" x="0" y="192" width="64" height="64"/>
-    <SubTexture name="3_1" x="64" y="192" width="64" height="64"/>
-    <SubTexture name="3_2" x="128" y="192" width="64" height="64"/>
-    <SubTexture name="3_3" x="192" y="192" width="64" height="64"/>
-    <SubTexture name="3_4" x="256" y="192" width="64" height="64"/>
-    <SubTexture name="3_5" x="320" y="192" width="64" height="64"/>
-    <SubTexture name="3_6" x="384" y="192" width="64" height="64"/>
-    <SubTexture name="3_7" x="448" y="192" width="64" height="64"/>
-    <SubTexture name="3_8" x="512" y="192" width="64" height="64"/>
-    <SubTexture name="3_9" x="576" y="192" width="64" height="64"/>
-    <SubTexture name="3_10" x="640" y="192" width="64" height="64"/>
-    <SubTexture name="3_11" x="704" y="192" width="64" height="64"/>
-    <SubTexture name="3_12" x="768" y="192" width="64" height="64"/>
-    <SubTexture name="3_13" x="832" y="192" width="64" height="64"/>
-    <SubTexture name="3_14" x="896" y="192" width="64" height="64"/>
-    <SubTexture name="3_15" x="960" y="192" width="64" height="64"/>
-    <SubTexture name="4_0" x="0" y="256" width="64" height="64"/>
-    <SubTexture name="4_1" x="64" y="256" width="64" height="64"/>
-    <SubTexture name="4_2" x="128" y="256" width="64" height="64"/>
-    <SubTexture name="4_3" x="192" y="256" width="64" height="64"/>
-    <SubTexture name="4_4" x="256" y="256" width="64" height="64"/>
-    <SubTexture name="4_5" x="320" y="256" width="64" height="64"/>
-    <SubTexture name="4_6" x="384" y="256" width="64" height="64"/>
-    <SubTexture name="4_7" x="448" y="256" width="64" height="64"/>
-    <SubTexture name="4_8" x="512" y="256" width="64" height="64"/>
-    <SubTexture name="4_9" x="576" y="256" width="64" height="64"/>
-    <SubTexture name="4_10" x="640" y="256" width="64" height="64"/>
-    <SubTexture name="4_11" x="704" y="256" width="64" height="64"/>
-    <SubTexture name="4_12" x="768" y="256" width="64" height="64"/>
-    <SubTexture name="4_13" x="832" y="256" width="64" height="64"/>
-    <SubTexture name="4_14" x="896" y="256" width="64" height="64"/>
-    <SubTexture name="4_15" x="960" y="256" width="64" height="64"/>
-    <SubTexture name="5_0" x="0" y="320" width="64" height="64"/>
-    <SubTexture name="5_1" x="64" y="320" width="64" height="64"/>
-    <SubTexture name="5_2" x="128" y="320" width="64" height="64"/>
-    <SubTexture name="5_3" x="192" y="320" width="64" height="64"/>
-    <SubTexture name="5_4" x="256" y="320" width="64" height="64"/>
-    <SubTexture name="5_5" x="320" y="320" width="64" height="64"/>
-    <SubTexture name="5_6" x="384" y="320" width="64" height="64"/>
-    <SubTexture name="5_7" x="448" y="320" width="64" height="64"/>
-    <SubTexture name="5_8" x="512" y="320" width="64" height="64"/>
-    <SubTexture name="5_9" x="576" y="320" width="64" height="64"/>
-    <SubTexture name="5_10" x="640" y="320" width="64" height="64"/>
-    <SubTexture name="5_11" x="704" y="320" width="64" height="64"/>
-    <SubTexture name="5_12" x="768" y="320" width="64" height="64"/>
-    <SubTexture name="5_13" x="832" y="320" width="64" height="64"/>
-    <SubTexture name="5_14" x="896" y="320" width="64" height="64"/>
-    <SubTexture name="5_15" x="960" y="320" width="64" height="64"/>
-    <SubTexture name="6_0" x="0" y="384" width="64" height="64"/>
-    <SubTexture name="6_1" x="64" y="384" width="64" height="64"/>
-    <SubTexture name="6_2" x="128" y="384" width="64" height="64"/>
-    <SubTexture name="6_3" x="192" y="384" width="64" height="64"/>
-    <SubTexture name="6_4" x="256" y="384" width="64" height="64"/>
-    <SubTexture name="6_5" x="320" y="384" width="64" height="64"/>
-    <SubTexture name="6_6" x="384" y="384" width="64" height="64"/>
-    <SubTexture name="6_7" x="448" y="384" width="64" height="64"/>
-    <SubTexture name="6_8" x="512" y="384" width="64" height="64"/>
-    <SubTexture name="6_9" x="576" y="384" width="64" height="64"/>
-    <SubTexture name="6_10" x="640" y="384" width="64" height="64"/>
-    <SubTexture name="6_11" x="704" y="384" width="64" height="64"/>
-    <SubTexture name="6_12" x="768" y="384" width="64" height="64"/>
-    <SubTexture name="6_13" x="832" y="384" width="64" height="64"/>
-    <SubTexture name="6_14" x="896" y="384" width="64" height="64"/>
-    <SubTexture name="6_15" x="960" y="384" width="64" height="64"/>
-    <SubTexture name="7_0" x="0" y="448" width="64" height="64"/>
-    <SubTexture name="7_1" x="64" y="448" width="64" height="64"/>
-    <SubTexture name="7_2" x="128" y="448" width="64" height="64"/>
-    <SubTexture name="7_3" x="192" y="448" width="64" height="64"/>
-    <SubTexture name="7_4" x="256" y="448" width="64" height="64"/>
-    <SubTexture name="7_5" x="320" y="448" width="64" height="64"/>
-    <SubTexture name="7_6" x="384" y="448" width="64" height="64"/>
-    <SubTexture name="7_7" x="448" y="448" width="64" height="64"/>
-    <SubTexture name="7_8" x="512" y="448" width="64" height="64"/>
-    <SubTexture name="7_9" x="576" y="448" width="64" height="64"/>
-    <SubTexture name="7_10" x="640" y="448" width="64" height="64"/>
-    <SubTexture name="7_11" x="704" y="448" width="64" height="64"/>
-    <SubTexture name="7_12" x="768" y="448" width="64" height="64"/>
-    <SubTexture name="7_13" x="832" y="448" width="64" height="64"/>
-    <SubTexture name="7_14" x="896" y="448" width="64" height="64"/>
-    <SubTexture name="7_15" x="960" y="448" width="64" height="64"/>
-
-</TextureAtlas>

BIN
NewSpaceGame/Resources/Sprites/green_beam.png


BIN
NewSpaceGame/Resources/Sprites/space_background.png


BIN
NewSpaceGame/Resources/Sprites/spacegame_sheet.png


+ 0 - 11
NewSpaceGame/Resources/Sprites/spacegame_sheet.xml

@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Created with TexturePacker http://www.codeandweb.com/texturepacker-->
-<!-- $TexturePacker:SmartUpdate:1a17c841c2e0285d52a986d357f78c54:1/1$ -->
-<TextureAtlas imagePath="spacegame_sheet.png">
-    <SubTexture name="spaceship_cricket" x="2" y="170" width="127" height="184" frameX="-1" frameY="0" frameWidth="129" frameHeight="184"/>
-    <SubTexture name="spaceship_flea" x="186" y="50" width="48" height="41"/>
-    <SubTexture name="spaceship_locust" x="2" y="2" width="182" height="166"/>
-    <SubTexture name="spaceship_louse" x="186" y="2" width="60" height="46"/>
-    <SubTexture name="spaceship_mantis" x="131" y="274" width="87" height="104"/>
-    <SubTexture name="spaceship_scarab" x="131" y="170" width="105" height="102"/>
-</TextureAtlas>

BIN
NewSpaceGame/Resources/Sprites/spaceship_cricket.png


BIN
NewSpaceGame/Resources/Sprites/spaceship_flea.png


BIN
NewSpaceGame/Resources/Sprites/spaceship_locust.png


BIN
NewSpaceGame/Resources/Sprites/spaceship_louse.png


BIN
NewSpaceGame/Resources/Sprites/spaceship_mantis.png


BIN
NewSpaceGame/Resources/Sprites/spaceship_scarab.png


+ 0 - 25
NewSpaceGame/Resources/UI/Hud.ui.txt

@@ -1,25 +0,0 @@
-#SpaceGame HUD
-
-# definitions is not a keyword, it is just a node which we can include later
-definitions
-	atomictext
-		skin SpaceText
-
-TBLayout: axis: y, distribution: available, size: available, spacing: 0
-	TBLayout: distribution: gravity
-		TBContainer: skin: "SpaceGameContainer", gravity: left right
-			TBLayout: distribution: available, size: available, spacing: 0
-				TBWidget:
-					TBTextField: text: "Score: 0", id: "scoretext", text-align: "left", gravity: left
-						@include definitions>atomictext
-						lp: width: 192
-						font: size: 24
-					TBTextField: text: "Atomic Space Game", gravity: all
-						@include definitions>atomictext
-						font: size: 24
-					TBLayout: gravity: right, distribution: available, size: available, spacing: 4
-						lp: width: 128, height: 32
-						TBSkinImage: skin: "Spaceship", id: "ship1"
-						TBSkinImage: skin: "Spaceship", id: "ship2"
-						TBSkinImage: skin: "Spaceship", id: "ship3"
-	TBWidget: id: "viewport"

+ 0 - 0
NewSpaceGame/.gitignore → SpaceGame/.gitignore


+ 0 - 0
NewSpaceGame/Resources.asset → SpaceGame/Resources.asset


+ 0 - 0
NewSpaceGame/Resources/Components.asset → SpaceGame/Resources/Components.asset


+ 34 - 30
SpaceGame/Resources/Components/AI.js

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

+ 0 - 0
NewSpaceGame/Resources/Components/AI.js.asset → SpaceGame/Resources/Components/AI.js.asset


+ 49 - 47
SpaceGame/Resources/Components/Bullet.js

@@ -1,9 +1,11 @@
-var game = Atomic.game;
-var node = self.node;
+exports.component = function(self) {
 
-self.isPlayer = false;
+  var game = Atomic.game;
+  var node = self.node;
 
-self.init = function(isPlayer, spawnPosition) {
+  self.isPlayer = false;
+
+  self.init = function(isPlayer, spawnPosition) {
 
     self.isPlayer = isPlayer;
 
@@ -11,9 +13,9 @@ self.init = function(isPlayer, spawnPosition) {
     var sprite2D = node.createComponent("StaticSprite2D");
 
     if (self.isPlayer)
-        sprite2D.sprite = game.getSprite2D("Sprites/blue_beam.png");
+      sprite2D.sprite = game.getSprite2D("Sprites/blue_beam.png");
     else
-        sprite2D.sprite = game.getSprite2D("Sprites/green_beam.png");
+      sprite2D.sprite = game.getSprite2D("Sprites/green_beam.png");
 
     sprite2D.blendMode = Atomic.BLEND_ADDALPHA;
 
@@ -25,97 +27,97 @@ self.init = function(isPlayer, spawnPosition) {
     node.position2D = spawnPosition;
 
     if (!self.isPlayer) {
-        node.roll(180);
+      node.roll(180);
     }
 
-}
-
-function start() {
+  }
 
-
-}
-
-function updateEnemyBullet() {
+  function updateEnemyBullet() {
 
     var bpos = node.position2D;
 
     // off the bottom of the screen
     if (bpos[1] < -SpaceGame.halfHeight) {
-        return true;
+      return true;
     }
 
     if (SpaceGame.player) {
 
-        var epos = SpaceGame.player.node.worldPosition2D;
+      var epos = SpaceGame.player.node.worldPosition2D;
 
-        if (Math.abs(epos[0] - bpos[0]) < 0.25 &&
-            Math.abs(epos[1] - bpos[1]) < 0.25) {
+      if (Math.abs(epos[0] - bpos[0]) < 0.25 &&
+        Math.abs(epos[1] - bpos[1]) < 0.25) {
 
-            SpaceGame.player.onHit();
+        SpaceGame.player.onHit();
 
-            return true;
-        }
+        return true;
+      }
 
     }
 
-}
+  }
 
-function updatePlayerBullet() {
+  function updatePlayerBullet() {
 
     var bpos = node.position2D;
 
     // off the top of the screen
     if (bpos[1] > SpaceGame.halfHeight) {
-        return true;
+      return true;
     }
 
     for (var i = 0; i < SpaceGame.enemies.length; i++) {
 
-        var enemy = SpaceGame.enemies[i];
-
-        var epos = enemy.node.worldPosition2D;
+      var enemy = SpaceGame.enemies[i];
 
-        if (Math.abs(epos[0] - bpos[0]) < 0.25 &&
-            Math.abs(epos[1] - bpos[1]) < 0.25) {
+      var epos = enemy.node.worldPosition2D;
 
-            enemy.onHit();
+      if (Math.abs(epos[0] - bpos[0]) < 0.25 &&
+        Math.abs(epos[1] - bpos[1]) < 0.25) {
 
-            return true;
-        }
+        enemy.onHit();
+        return true;
+      }
 
     }
 
     if (SpaceGame.capitalShip) {
 
-        var epos = SpaceGame.capitalShip.node.worldPosition2D;
+      var epos = SpaceGame.capitalShip.node.worldPosition2D;
 
-        if (Math.abs(epos[0] - bpos[0]) < 0.75 &&
-            Math.abs(epos[1] - bpos[1]) < 0.75) {
+      if (Math.abs(epos[0] - bpos[0]) < 0.75 &&
+        Math.abs(epos[1] - bpos[1]) < 0.75) {
 
-            SpaceGame.capitalShip.onHit(bpos);
+        SpaceGame.capitalShip.onHit(bpos);
 
-            return true;
-        }
+        return true;
+      }
 
     }
 
-}
+  }
+
+  self.update = function(timeStep) {
 
-function update(timeStep) {
+    if (!SpaceGame) {
+      Atomic.destroy(node);
+      return;
+    }
 
     var speed = self.isPlayer ? 8 : 5;
     speed *= timeStep;
     node.translate2D([0, speed]);
 
     if (self.isPlayer) {
-        if (updatePlayerBullet()) {
-            Atomic.destroy(node);
-        }
+      if (updatePlayerBullet()) {
+        Atomic.destroy(node);
+      }
     } else {
-        if (updateEnemyBullet()) {
-            Atomic.destroy(node);
-        }
+      if (updateEnemyBullet()) {
+        Atomic.destroy(node);
+      }
     }
 
+  }
 
-}
+}

+ 0 - 0
NewSpaceGame/Resources/Components/Bullet.js.asset → SpaceGame/Resources/Components/Bullet.js.asset


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

@@ -1,76 +1,86 @@
-var game = Atomic.game;
-var node = self.node;
-var scene = game.scene;
+exports.component = function(self) {
 
-self.allowShoot = true;
-self.shootDelta = 0;
+  var game = Atomic.game;
+  var node = self.node;
+  var scene = SpaceGame.myscene;
 
-self.health = 40;
+  self.allowShoot = true;
+  self.shootDelta = 0;
 
-self.onHit = function(pos) {
+  self.health = 10;
 
+  self.onHit = function(pos) {
 
-    var expNode = game.scene.createChild("Explosion");
-    var exp = expNode.createJSComponent("Explosion");
-    exp.init(pos);
+    var expNode = scene.createChild("Explosion");
+    var exp = expNode.createJSComponent("Components/Explosion.js", {
+      spawnPosition: node.worldPosition2D
+    });
 
-    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();
-        SpaceGame.win();
+      die();
+      SpaceGame.win();
     }
 
-}
+  }
 
-function 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];
-    }
+      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("Components/Explosion.js", {
+        spawnPosition: node.worldPosition2D
+      });
 
-}
+      var randomSize = SpaceGame.random(4, 8);
+      exp.node.scale2D = [randomSize, randomSize];
+    }
 
+  }
 
-// using start to initialize the script component
-function start() {
+  // using start to initialize the script component
+  self.start = function() {
 
     // install AI
-    var ai = node.createJSComponent("AI");
+    var ai = node.createJSComponent("Components/AI.js");
     ai.canMove = true;
-    
-
 
     var spaceSheet = game.getSpriteSheet("Sprites/spacegame_sheet.xml");
 
     // add a sprite component to our node
-    var sprite2D = node.createComponent("StaticSprite2D");
+    var sprite2D = self.sprite2D = node.createComponent("StaticSprite2D");
     sprite2D.blendMode = Atomic.BLEND_ALPHA;
     sprite2D.sprite = spaceSheet.getSprite("spaceship_locust");
+    sprite2D.alpha = 0.0;
 
     node.position2D = [-4, SpaceGame.halfHeight - 1];
     node.roll(180);
 
-}
+  }
 
-// update function called per frame with delta time
-function update(timeStep) {
+  // update function called per frame with delta time
+  self.update = function(timeStep) {
 
+    // fade in
+    var alpha = self.sprite2D.alpha;
 
-}
+    if (alpha < 1) {
+      alpha += timeStep * 1.5;
+      if (alpha > 1)
+        alpha = 1;
+
+      self.sprite2D.alpha = alpha;
+
+    }
+
+  }
+
+}

+ 0 - 0
NewSpaceGame/Resources/Components/CapitalShip.js.asset → SpaceGame/Resources/Components/CapitalShip.js.asset


+ 42 - 21
SpaceGame/Resources/Components/Enemy.js

@@ -1,31 +1,36 @@
-var game = Atomic.game;
-var node = self.node;
+exports.component = function(self) {
 
-self.allowShoot = true;
-self.shootDelta = 0;
+  var game = Atomic.game;
+  var node = self.node;
 
-var moveDelta = 0;
+  self.allowShoot = true;
+  self.shootDelta = 0;
 
-var dead = false;
+  var moveDelta = 0;
+
+  var dead = false;
+
+  self.onHit = function() {
+
+    var expNode = SpaceGame.myscene.createChild("Explosion");
+
+    var exp = expNode.createJSComponent("Components/Explosion.js", {
+      spawnPosition: node.worldPosition2D
+    });
 
-self.onHit = function() {
-    
-    var expNode = game.scene.createChild("Explosion");
-    var exp = expNode.createJSComponent("Explosion");
-    exp.init(node.worldPosition2D);    
     SpaceGame.removeEnemy(self);
-    
-}
 
-function start() {
+  }
+
+  self.start = function() {
 
     // install AI
-    node.createJSComponent("AI");
+    node.createJSComponent("Components/AI.js");
 
     var spaceSheet = game.getSpriteSheet("Sprites/spacegame_sheet.xml");
 
     // add a sprite component to our node
-    var sprite2D = node.createComponent("StaticSprite2D");
+    var sprite2D = self.sprite2D = node.createComponent("StaticSprite2D");
     sprite2D.blendMode = Atomic.BLEND_ALPHA;
     sprite2D.sprite = spaceSheet.getSprite(self.spriteName);
 
@@ -33,19 +38,33 @@ function start() {
     node.roll(180);
     node.scale2D = [0.65, 0.65];
 
+    sprite2D.alpha = 0.0;
+
     self.dir = (Math.random() > .5);
 
 
-}
+  }
 
-// update function called per frame with delta time
-function update(timeStep) {
+  // update function called per frame with delta time
+  self.update = function(timeStep) {
+
+    // fade in
+    var alpha = self.sprite2D.alpha;
+
+    if (alpha < 1) {
+      alpha += timeStep * 1.5;
+      if (alpha > 1)
+        alpha = 1;
+
+      self.sprite2D.alpha = alpha;
+
+    }
 
     var pos = node.position2D;
     var ppos = SpaceGame.playerNode.position2D;
 
     if (Math.random() > .98) {
-        self.dir = !self.dir;
+      self.dir = !self.dir;
     }
 
     moveDelta += (self.dir ? timeStep * 4 : -timeStep * 4);
@@ -54,4 +73,6 @@ function update(timeStep) {
     pos[1] += Math.sin(moveDelta) * .1;
     node.position2D = pos;
 
-}
+  }
+
+}

+ 0 - 0
NewSpaceGame/Resources/Components/Enemy.js.asset → SpaceGame/Resources/Components/Enemy.js.asset


+ 28 - 37
SpaceGame/Resources/Components/Explosion.js

@@ -1,37 +1,31 @@
+exports.component = function(self) {
 
-var game = Atomic.game;
-var node = self.node;
-var cache = game.cache;
+  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 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;
+  var sprites = [];
+  var frame = 0;
+  var frameTime = 0;
 
-self.init = function(spawnPosition) {
-
-    self.spawnPosition = spawnPosition;
-
-}
-
-// using start to initialize the script component
-function start() {
+  // using start to initialize the script component
+  self.start = function() {
 
     var i = Math.round(Math.random() * 7);
 
-    for (var j = 0; j < 16; j++)
-    {
-        sprites.push(expSheet.getSprite(i + "_" + j));
+    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.position2D = self.spawnPosition;
     node.scale2D = [1.5, 1.5];
     sprite2D.orderInLayer = 200;
 
@@ -41,26 +35,23 @@ function start() {
 
     self.soundSource.play(boomSound);
 
+  }
 
-}
-
-// update function called per frame with delta time
-function update(timeStep) {
+  // update function called per frame with delta time
+  self.update = function(timeStep) {
 
     frameTime += timeStep;
-    if (frameTime > .05)
-    {
-        frameTime = 0;
-        frame++;
-        if (frame == 16)
-        {
-            Atomic.destroy(node);
-            return;
-        }
-
-        self.sprite2D.sprite = sprites[frame];
+    if (frameTime > .05) {
+      frameTime = 0;
+      frame++;
+      if (frame == 16) {
+        Atomic.destroy(node);
+        return;
+      }
+
+      self.sprite2D.sprite = sprites[frame];
     }
 
-}
-
+  }
 
+}

+ 0 - 0
NewSpaceGame/Resources/Components/Explosion.js.asset → SpaceGame/Resources/Components/Explosion.js.asset


+ 25 - 26
SpaceGame/Resources/Components/HUD.js

@@ -1,44 +1,43 @@
+exports.component = function(self) {
 
-var game = Atomic.game;
-var view = game.uiView;
-var UI = Atomic.UI;
-var UIButton = Atomic.UIButton;
-var UITextField = Atomic.UITextField;
-var UILayout = Atomic.UILayout;
+  var game = Atomic.game;
+  var view = game.uiView;
+  var UI = Atomic.UI;
+  var UIButton = Atomic.UIButton;
+  var UITextField = Atomic.UITextField;
+  var UILayout = Atomic.UILayout;
 
-var layout = new Atomic.UIWidget();
-layout.load("UI/Hud.ui.txt");
-layout.setSize(1280, 720);
-view.addChild(layout);
+  var layout = new Atomic.UIWidget();
+  layout.load("UI/Hud.ui.txt");
+  layout.setSize(game.graphics.width, game.graphics.height);
+  view.addChild(layout);
 
-game.viewport.rect = layout.getWidget("viewport").rect;
+  SpaceGame.viewport.rect = layout.getWidget("viewport").rect;
 
-var scoretext = layout.getWidget("scoretext");
+  self.cleanup = function() {
+    view.removeChild(layout);
+  }
 
-//UI.debugShowSettingsWindow(view);
+  var scoretext = layout.getWidget("scoretext");
 
-self.updateScore = function (value) {
+  //UI.debugShowSettingsWindow(view);
 
-	scoretext.text = "Score: " + value;
+  self.updateScore = function(value) {
 
-}
+    scoretext.text = "Score: " + value;
+
+  }
 
-self.updateHealth = function (value) {
+  self.updateHealth = function(value) {
 
     //healthText.text = "Health: " + value;
 
-}
+  }
 
-self.updateGameText = function (text) {
+  self.updateGameText = function(text) {
 
     //gameText.text = text;
 
-}
-
-function start() {
-
-}
-
-function update(timeStep) {
+  }
 
 }

+ 0 - 0
NewSpaceGame/Resources/Components/HUD.js.asset → SpaceGame/Resources/Components/HUD.js.asset


+ 38 - 34
SpaceGame/Resources/Components/Player.js

@@ -1,19 +1,22 @@
-var game = Atomic.game;
-var input = game.input;
+exports.component = function(self) {
 
-var node = self.node;
+  var game = Atomic.game;
+  var input = game.input;
 
-self.allowMove = true;
-self.allowShoot = true;
-self.shootDelta = 0;
+  var node = self.node;
 
-self.health = 10;
+  self.allowMove = true;
+  self.allowShoot = true;
+  self.shootDelta = 0;
 
-self.onHit = function() {
+  self.health = 10;
 
-    var expNode = game.scene.createChild("Explosion");
-    var exp = expNode.createJSComponent("Explosion");
-    exp.init(node.worldPosition2D);
+  self.onHit = function() {
+
+    var expNode = SpaceGame.myscene.createChild("Explosion");
+    var exp = expNode.createJSComponent("Components/Explosion.js", {
+      spawnPosition: node.worldPosition2D
+    });
 
     self.health--;
 
@@ -21,25 +24,24 @@ self.onHit = function() {
 
     if (self.health == 0) {
 
-        SpaceGame.lose();
+      SpaceGame.lose();
 
     }
 
+  }
 
-}
-
-function doShooting(timeStep) {
+  function doShooting(timeStep) {
     if (self.shootDelta > 0) {
 
-        self.shootDelta -= timeStep;
-        if (self.shootDelta < 0)
-            self.shootDelta = 0;
+      self.shootDelta -= timeStep;
+      if (self.shootDelta < 0)
+        self.shootDelta = 0;
 
-        return;
+      return;
     }
 
     if (!input.getKeyDown(Atomic.KEY_W) && !input.getKeyDown(Atomic.KEY_UP) && !input.getKeyDown(Atomic.KEY_SPACE))
-        return;
+      return;
 
     self.shootDelta = 0.15;
 
@@ -48,9 +50,9 @@ function doShooting(timeStep) {
 
     SpaceGame.spawnBullet(pos, true);
 
-}
+  }
 
-function moveShip(timeStep) {
+  function moveShip(timeStep) {
     var speed = 3.0 * timeStep;
 
     var pos = node.position2D;
@@ -60,23 +62,23 @@ function moveShip(timeStep) {
 
 
     if (input.getKeyDown(Atomic.KEY_A) || input.getKeyDown(Atomic.KEY_LEFT))
-        pos[0] -= speed;
+      pos[0] -= speed;
 
     if (input.getKeyDown(Atomic.KEY_D) || input.getKeyDown(Atomic.KEY_RIGHT))
-        pos[0] += speed;
+      pos[0] += speed;
 
     if (pos[0] < -SpaceGame.halfWidth + 2)
-        pos[0] = -SpaceGame.halfWidth + 2;
+      pos[0] = -SpaceGame.halfWidth + 2;
 
     if (pos[0] > SpaceGame.halfWidth - 2)
-        pos[0] = SpaceGame.halfWidth - 2;
+      pos[0] = SpaceGame.halfWidth - 2;
 
 
     node.position2D = pos;
 
-}
+  }
 
-function start() {
+  self.start = function() {
 
     var spaceSheet = game.getSpriteSheet("Sprites/spacegame_sheet.xml");
 
@@ -84,16 +86,18 @@ function start() {
     sprite2D.sprite = spaceSheet.getSprite("spaceship_mantis");
     sprite2D.blendMode = Atomic.BLEND_ALPHA;
 
-    node.position2D = [0, -SpaceGame.halfHeight + 1];
+    node.position2D = [0, -SpaceGame.halfHeight + .65];
 
-}
+  }
 
-function update(timeStep) {
+  self.update = function(timeStep) {
 
     if (self.allowShoot)
-        doShooting(timeStep);
+      doShooting(timeStep);
 
     if (self.allowMove)
-        moveShip(timeStep);
+      moveShip(timeStep);
 
-}
+  }
+
+}

+ 0 - 0
NewSpaceGame/Resources/Components/Player.js.asset → SpaceGame/Resources/Components/Player.js.asset


+ 0 - 27
SpaceGame/Resources/Components/Space.js

@@ -1,27 +0,0 @@
-
-var game = Atomic.game;
-var node = self.node;
-
-node.scale2D = [1.5, 1.5];
-node.position2D = [0, 12];
-
-function start() {
-
-    var spaceSprite = game.cache.getResource("Sprite2D", "Sprites/space_background.png");
-
-    // add a sprite component to our node
-    var sprite2D = node.createComponent("StaticSprite2D");
-    
-    sprite2D.orderInLayer = -200;
-    sprite2D.blendMode = Atomic.BLEND_ADDALPHA;    
-    sprite2D.sprite = spaceSprite;
-
-}
-
-function update(timeStep) {
-
-    var speed = .75;
-	node.translate([0, -timeStep * speed, 0]);
-
-}
-

+ 0 - 0
NewSpaceGame/Resources/Components/SpaceBackground.js → SpaceGame/Resources/Components/SpaceBackground.js


+ 0 - 0
NewSpaceGame/Resources/Components/SpaceBackground.js.asset → SpaceGame/Resources/Components/SpaceBackground.js.asset


+ 128 - 77
SpaceGame/Resources/Components/SpaceGame.js

@@ -1,45 +1,49 @@
-var game = Atomic.game;
-var scene = game.scene;
+var UI = require("UI/ui");
+var options = require("UI/options")
 
-// expose ourselves as a global
-SpaceGame = self;
+exports.component = function(self) {
 
-self.halfWidth = game.graphics.width * Atomic.PIXEL_SIZE * 0.5;
-self.halfHeight = game.graphics.height * Atomic.PIXEL_SIZE * 0.5;
+  var game = Atomic.game;
 
-var enemyBaseDir = false;
-var enemyBaseNode = scene.createChild("EnemyBaseNode");
-var enemyBasePosX = 0;
+  // expose ourselves as a global, this is invalid in "use strict"; which perhaps we should be using
+  // to enforce better form
+  SpaceGame = self;
 
-var score = 0;
+  createScene();
 
-self.enemies = [];
-self.gameOver = false;
+  self.halfWidth = game.graphics.width * Atomic.PIXEL_SIZE * 0.5;
+  self.halfHeight = game.graphics.height * Atomic.PIXEL_SIZE * 0.5;
 
-self.random = function random(min, max) {
+  var enemyBaseDir = false;
+  var enemyBaseNode = self.myscene.createChild("EnemyBaseNode");
+  var enemyBasePosX = 0;
+
+  var score = 0;
+
+  self.enemies = [];
+  self.gameOver = false;
+
+  self.random = function random(min, max) {
     return Math.random() * (max - min) + min;
-}
+  }
 
-self.spawnBullet = function(pos, isPlayer) {
+  self.spawnBullet = function(pos, isPlayer) {
 
-    var bulletNode = scene.createChild("Bullet");
-    var bullet = bulletNode.createJSComponent("Bullet");
+    var bulletNode = self.myscene.createChild("Bullet");
+    var bullet = bulletNode.createJSComponent("Components/Bullet.js");
     bullet.init(isPlayer, pos);
-}
+  }
 
-self.removeEnemy = function(enemy) {
+  self.removeEnemy = function(enemy) {
 
     score += 10;
-
     self.hud.updateScore(score);
-
     self.enemies.splice(self.enemies.indexOf(enemy), 1);
-    Atomic.destroy(enemy.node);
-    return;
 
-}
+    Atomic.destroy(enemy.node);
+  }
 
-self.capitalShipDestroyed = function() {
+  self.capitalShipDestroyed = function() {
 
     score += 1000;
 
@@ -48,111 +52,158 @@ 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");
+    self.capitalShipNode = self.myscene.createChild("CapitalShip");
+    self.capitalShip = self.capitalShipNode.createJSComponent("Components/CapitalShip.js");
 
     var pos = [0, 0];
 
     pos[1] = self.halfHeight - 2.5;
 
-    for (var y = 0; y < 3; y++) {
+    for (var y = 0; y < 2; y++) {
+
+      pos[0] = -4.5;
+
+      for (var x = 0; x < 12; x++) {
 
-        pos[0] = -4.5;
+        var enemyNode = enemyBaseNode.createChild("Enemy");
 
-        for (var x = 0; x < 12; x++) {
+        var enemy = enemyNode.createJSComponent("Components/Enemy.js", {
+          spriteName: Math.random() < .85 ? "spaceship_louse" : "spaceship_scarab",
+          spawnPosition: [pos[0], pos[1]]
+        });
 
-            var enemyNode = enemyBaseNode.createChild("Enemy");
-            enemy = enemyNode.createJSComponent("Enemy");
-            enemy.spriteName = Math.random() < .85 ? "spaceship_louse" : "spaceship_scarab";
-            enemy.spawnPosition = [pos[0], pos[1]];
-            self.enemies.push(enemy);
+        self.enemies.push(enemy);
 
-            pos[0] += 0.75;
+        pos[0] += 0.75;
 
-        }
+      }
 
-        pos[1] -= 0.75;
+      pos[1] -= 0.75;
 
     }
 
-}
+  }
 
-function updateEnemies(timeStep) {
+  function updateEnemies(timeStep) {
 
     if (!enemyBaseDir)
-        enemyBasePosX += timeStep;
+      enemyBasePosX += timeStep;
     else
-        enemyBasePosX -= timeStep;
+      enemyBasePosX -= timeStep;
 
     var xvalue = 2;
 
     if (enemyBasePosX > xvalue) {
-        enemyBasePosX = xvalue;
-        enemyBaseDir = !enemyBaseDir;
+      enemyBasePosX = xvalue;
+      enemyBaseDir = !enemyBaseDir;
     }
 
     if (enemyBasePosX < -xvalue) {
-        enemyBasePosX = -xvalue;
-        enemyBaseDir = !enemyBaseDir;
+      enemyBasePosX = -xvalue;
+      enemyBaseDir = !enemyBaseDir;
     }
 
     enemyBaseNode.position2D = [enemyBasePosX, 0];
 
-}
+  }
+
+  self.cleanup = function() {
+
+    game.renderer.setViewport(1, null);
+
+    self.hud.cleanup();
+    Atomic.destroy(self.myscene);
 
-self.win = function() {
+    // our node is in the main scene
+    Atomic.destroy(self.node);
+
+    SpaceGame = null;
+
+
+  }
+
+  self.win = function() {
 
     self.hud.updateGameText("YOU WIN!!!!");
     self.gameOver = true;
+    UI.showGameOver();
+    //self.cleanup();
 
-}
+  }
 
-self.lose = function() {
+  self.lose = function() {
 
     self.hud.updateGameText("YOU LOSE!!!!");
     self.gameOver = true;
+    UI.showGameOver();
+    //self.cleanup();
 
-}
+  }
 
-function spawnPlayer() {
+  function spawnPlayer() {
 
-    self.playerNode = scene.createChild("Player");
-    self.player = self.playerNode.createJSComponent("Player");
-}
+    self.playerNode = self.myscene.createChild("Player");
+    self.player = self.playerNode.createJSComponent("Components/Player.js");
+  }
+
+  function createScene() {
+
+    var scene = new Atomic.Scene();
+    scene.createComponent("Octree");
+
+    var cameraNode = scene.createChild("Camera");
+    cameraNode.position = [0.0, 0.0, -10.0];
+
+    var camera = cameraNode.createComponent("Camera");
+    camera.orthographic = true;
+    camera.orthoSize = game.graphics.height * Atomic.PIXEL_SIZE;
 
+    var viewport = new Atomic.Viewport(scene, camera);
 
-function start() {
+    // assign a render path to our viewport which doesn't clear the screen
+    // so can be used to composite
+    var renderPathXML = game.cache.getResource("XMLFile", "Data/RenderPath.xml");
+    viewport.renderPath = renderPathXML;
 
-    self.hud = scene.createJSComponent("HUD");    
+    // Example of appending a post process filter
+    if (options.getOptions().blackAndWhite)
+      viewport.renderPath.append(game.cache.getResource("XMLFile", "PostProcess/GreyScale.xml"));
+    if (options.getOptions().blur)
+      viewport.renderPath.append(game.cache.getResource("XMLFile", "PostProcess/Blur.xml"));
+
+
+    game.renderer.setViewport(1, viewport);
+
+    // this is component getScene property (there is no setter on it)
+    // this should be an error, think I saw somewhere you can raise errors on
+    // get/set of a prop when the get/set missing
+    self.myscene = scene;
+    self.cameraNode = cameraNode;
+    self.camera = camera;
+    self.viewport = viewport;
+
+  }
+
+
+  self.start = function() {
+
+    var hudnode = self.myscene.createChild();
+    self.hud = hudnode.createJSComponent("Components/HUD.js");
 
-    spawnSpace();
     spawnPlayer();
     spawnEnemies();
 
-    var musicFile = game.cache.getResource("Sound", "Music/battle.ogg");
-    musicFile.looped = true;
-    var musicNode = scene.createChild("MusicNode");
-    var musicSource = musicNode.createComponent("SoundSource");
-    musicSource.gain = .5;
-    musicSource.soundType = Atomic.SOUND_MUSIC;
-    musicSource.play(musicFile);    
-}
+  }
 
 
-function update(timeStep) {
+  self.update = function(timeStep) {
 
     updateEnemies(timeStep);
 
-
-}
+  }
+}

+ 0 - 0
NewSpaceGame/Resources/Components/SpaceGame.js.asset → SpaceGame/Resources/Components/SpaceGame.js.asset


+ 0 - 18
SpaceGame/Resources/Components/TouchInput.js

@@ -1,19 +1 @@
 
-// Atomic Component
-
-var game = Atomic.game;
-var node = self.node;
-var input = game.input;
-
-function start() {
-
-	// input.setTouchEmulation(true);
-    var layout = game.cache.getResource("XMLFile", "Data/ScreenJoystick.xml");
-    var uiStyle = game.cache.getResource("XMLFile", "UI/DefaultStyle.xml");    
-    input.addScreenJoystick(layout, uiStyle);
-
-}
-
-function update(timeStep) {
-
-}

+ 0 - 0
NewSpaceGame/Resources/Components/TouchInput.js.asset → SpaceGame/Resources/Components/TouchInput.js.asset


+ 0 - 0
NewSpaceGame/Resources/Data.asset → SpaceGame/Resources/Data.asset


+ 0 - 0
NewSpaceGame/Resources/Data/RenderPath.xml → SpaceGame/Resources/Data/RenderPath.xml


+ 0 - 28
SpaceGame/Resources/Data/ScreenJoystick.xml

@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<element inherit="UI/ScreenJoystick.xml">
-    <replace sel="/element/element[./attribute[@name='Name' and @value='Button0']]/element[./attribute[@name='Name' and @value='Label']]/attribute[@name='Text']/@value">Fire</replace>
-    <add sel="/element/element[./attribute[@name='Name' and @value='Button0']]">
-        <attribute name="Is Visible" value="true" />
-        <element type="Text">
-        <attribute name="Name" value="KeyBinding" />
-        <attribute name="Text" value="UP" />
-        </element>
-    </add>
-    <add sel="/element/element[./attribute[@name='Name' and @value='Button1']]">
-        <attribute name="Is Visible" value="false" />
-    </add>
-    <add sel="/element/element[./attribute[@name='Name' and @value='Button2']]">
-        <element type="Text">
-            <attribute name="Name" value="KeyBinding" />
-            <attribute name="Text" value="SELECT" />
-        </element>
-    </add>
-    <replace sel="/element/element[./attribute[@name='Name' and @value='Hat0']]/attribute[@name='Position']/@value">12 -76</replace>
-    <add sel="/element/element[./attribute[@name='Name' and @value='Hat0']]">
-        <attribute name="Is Visible" value="true" />
-        <element type="Text">
-            <attribute name="Name" value="KeyBinding" />
-            <attribute name="Text" value="WSAD" />
-                    </element>
-    </add>
-</element>

+ 0 - 0
NewSpaceGame/Resources/Modules.asset → SpaceGame/Resources/Modules.asset


+ 0 - 0
NewSpaceGame/Resources/Modules/Game.js → SpaceGame/Resources/Modules/Game.js


+ 0 - 0
NewSpaceGame/Resources/Modules/Game.js.asset → SpaceGame/Resources/Modules/Game.js.asset


+ 0 - 0
NewSpaceGame/Resources/Modules/gl-matrix.js → SpaceGame/Resources/Modules/gl-matrix.js


+ 0 - 0
NewSpaceGame/Resources/Modules/gl-matrix.js.asset → SpaceGame/Resources/Modules/gl-matrix.js.asset


+ 0 - 0
NewSpaceGame/Resources/Music.asset → SpaceGame/Resources/Music.asset


+ 0 - 0
NewSpaceGame/Resources/Music/battle.ogg.asset → SpaceGame/Resources/Music/battle.ogg.asset


+ 0 - 0
NewSpaceGame/Resources/Scripts.asset → SpaceGame/Resources/Scripts.asset


+ 20 - 6
SpaceGame/Resources/Scripts/main.js

@@ -1,26 +1,40 @@
 
 // This script is the main entry point of the game
 
-require("AtomicGame");
+require("Game");
+
+// relative require not working for main.js due to how it is being loaded (however, does work elsewhere)
+var precache = require("Scripts/precache");
+var utils = require("Scripts/utils");
+var UI = require("UI/ui");
 
 Atomic.game.init(start, update);
 
 // called at the start of play
 function start() {
 
+	precache.precache(true);
+
 	var game = Atomic.game;
 
-	// create a 2D scene
+	UI.showMainMenu();
+
+	// create a main 2D scene, which will persist
+	// the space game itself uses a separate scene we can
+	// bring up and tear down
 	game.createScene2D();
 
-	// create the game component
-	var node = game.scene.createChild("SpaceGame");
-	node.createJSComponent("SpaceGame");
-	
+	var spaceNode = game.scene.createChild("SpaceBackground");
+	spaceNode.createJSComponent("Components/SpaceBackground.js");
+
+	// play some music!
+	utils.playMusic("Music/battle.ogg");
+
 }
 
 // called per frame
 function update(timeStep) {
 
+  UI.update(timeStep);
 
 }

+ 0 - 0
NewSpaceGame/Resources/Scripts/main.js.asset → SpaceGame/Resources/Scripts/main.js.asset


+ 0 - 0
NewSpaceGame/Resources/Scripts/precache.js → SpaceGame/Resources/Scripts/precache.js


+ 0 - 0
NewSpaceGame/Resources/Scripts/precache.js.asset → SpaceGame/Resources/Scripts/precache.js.asset


+ 0 - 0
NewSpaceGame/Resources/Scripts/utils.js → SpaceGame/Resources/Scripts/utils.js


+ 0 - 0
NewSpaceGame/Resources/Scripts/utils.js.asset → SpaceGame/Resources/Scripts/utils.js.asset


+ 0 - 14
SpaceGame/Resources/Skin/skin.ui.txt

@@ -1,14 +0,0 @@
-elements
-	Spaceship
-		bitmap spaceship.png
-		pref-width 32
-		pref-height 32
-	SpaceGameContainer
-		type StretchBox
-		bitmap window.png
-		cut 16
-		expand 12
-		padding 8
-	SpaceText
-		text-color #00FF00
-

BIN
SpaceGame/Resources/Skin/spaceship.png


BIN
SpaceGame/Resources/Skin/window.png


+ 0 - 0
NewSpaceGame/Resources/Sounds.asset → SpaceGame/Resources/Sounds.asset


+ 0 - 0
NewSpaceGame/Resources/Sounds/boom0.wav.asset → SpaceGame/Resources/Sounds/boom0.wav.asset


+ 0 - 0
NewSpaceGame/Resources/Sounds/boom1.wav.asset → SpaceGame/Resources/Sounds/boom1.wav.asset


+ 0 - 0
NewSpaceGame/Resources/Sounds/laser01.wav.asset → SpaceGame/Resources/Sounds/laser01.wav.asset


+ 0 - 0
NewSpaceGame/Resources/Sounds/laser02.wav.asset → SpaceGame/Resources/Sounds/laser02.wav.asset


+ 0 - 0
NewSpaceGame/Resources/Sprites.asset → SpaceGame/Resources/Sprites.asset


+ 0 - 0
NewSpaceGame/Resources/Sprites/blue_beam.png.asset → SpaceGame/Resources/Sprites/blue_beam.png.asset


+ 0 - 0
NewSpaceGame/Resources/Sprites/blue_star.png.asset → SpaceGame/Resources/Sprites/blue_star.png.asset


+ 0 - 0
NewSpaceGame/Resources/Sprites/explosions_sheet.png.asset → SpaceGame/Resources/Sprites/explosions_sheet.png.asset


+ 0 - 0
NewSpaceGame/Resources/Sprites/green_beam.png.asset → SpaceGame/Resources/Sprites/green_beam.png.asset


+ 0 - 0
NewSpaceGame/Resources/Sprites/space_background.png.asset → SpaceGame/Resources/Sprites/space_background.png.asset


+ 0 - 0
NewSpaceGame/Resources/Sprites/spacegame_sheet.png.asset → SpaceGame/Resources/Sprites/spacegame_sheet.png.asset


+ 0 - 0
NewSpaceGame/Resources/Sprites/spaceship_cricket.png.asset → SpaceGame/Resources/Sprites/spaceship_cricket.png.asset


+ 0 - 0
NewSpaceGame/Resources/Sprites/spaceship_flea.png.asset → SpaceGame/Resources/Sprites/spaceship_flea.png.asset


+ 0 - 0
NewSpaceGame/Resources/Sprites/spaceship_locust.png.asset → SpaceGame/Resources/Sprites/spaceship_locust.png.asset


+ 0 - 0
NewSpaceGame/Resources/Sprites/spaceship_louse.png.asset → SpaceGame/Resources/Sprites/spaceship_louse.png.asset


+ 0 - 0
NewSpaceGame/Resources/Sprites/spaceship_mantis.png.asset → SpaceGame/Resources/Sprites/spaceship_mantis.png.asset


+ 0 - 0
NewSpaceGame/Resources/Sprites/spaceship_scarab.png.asset → SpaceGame/Resources/Sprites/spaceship_scarab.png.asset


+ 0 - 0
NewSpaceGame/Resources/UI.asset → SpaceGame/Resources/UI.asset


+ 0 - 0
NewSpaceGame/Resources/UI/Hud.ui.txt.asset → SpaceGame/Resources/UI/Hud.ui.txt.asset


+ 0 - 0
NewSpaceGame/Resources/UI/Skin.asset → SpaceGame/Resources/UI/Skin.asset


+ 0 - 0
NewSpaceGame/Resources/UI/Skin/Override.asset → SpaceGame/Resources/UI/Skin/Override.asset


+ 0 - 0
NewSpaceGame/Resources/UI/Skin/Override/skin.ui.txt → SpaceGame/Resources/UI/Skin/Override/skin.ui.txt


+ 0 - 0
NewSpaceGame/Resources/UI/Skin/Override/skin.ui.txt.asset → SpaceGame/Resources/UI/Skin/Override/skin.ui.txt.asset


+ 0 - 0
NewSpaceGame/Resources/UI/Skin/Override/spaceship.png → SpaceGame/Resources/UI/Skin/Override/spaceship.png


Some files were not shown because too many files changed in this diff