SpaceGame.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. var game = Atomic.game;
  2. var scene = game.scene;
  3. // expose ourselves as a global
  4. SpaceGame = self;
  5. self.halfWidth = game.graphics.width * Atomic.PIXEL_SIZE * 0.5;
  6. self.halfHeight = game.graphics.height * Atomic.PIXEL_SIZE * 0.5;
  7. var enemyBaseDir = false;
  8. var enemyBaseNode = scene.createChild("EnemyBaseNode");
  9. var enemyBasePosX = 0;
  10. var score = 0;
  11. self.enemies = [];
  12. self.gameOver = false;
  13. self.random = function random(min, max) {
  14. return Math.random() * (max - min) + min;
  15. }
  16. self.spawnBullet = function(pos, isPlayer) {
  17. var bulletNode = scene.createChild("Bullet");
  18. var bullet = bulletNode.createJSComponent("Bullet");
  19. bullet.init(isPlayer, pos);
  20. }
  21. self.removeEnemy = function(enemy) {
  22. score += 10;
  23. self.hud.updateScore(score);
  24. self.enemies.splice(self.enemies.indexOf(enemy), 1);
  25. Atomic.destroy(enemy.node);
  26. return;
  27. }
  28. self.capitalShipDestroyed = function() {
  29. score += 1000;
  30. self.hud.updateScore(score);
  31. Atomic.destroy(self.capitalShipNode);
  32. self.capitalShipNode = self.capitalShip = null;
  33. }
  34. function spawnSpace() {
  35. var spaceNode = scene.createChild("Space");
  36. spaceNode.createJSComponent("Space");
  37. }
  38. function spawnEnemies() {
  39. self.capitalShipNode = scene.createChild("CapitalShip");
  40. self.capitalShip = self.capitalShipNode.createJSComponent("CapitalShip");
  41. var pos = [0, 0];
  42. pos[1] = self.halfHeight - 2.5;
  43. for (var y = 0; y < 3; y++) {
  44. pos[0] = -4.5;
  45. for (var x = 0; x < 12; x++) {
  46. var enemyNode = enemyBaseNode.createChild("Enemy");
  47. enemy = enemyNode.createJSComponent("Enemy");
  48. enemy.spriteName = Math.random() < .85 ? "spaceship_louse" : "spaceship_scarab";
  49. enemy.spawnPosition = [pos[0], pos[1]];
  50. self.enemies.push(enemy);
  51. pos[0] += 0.75;
  52. }
  53. pos[1] -= 0.75;
  54. }
  55. }
  56. function updateEnemies(timeStep) {
  57. if (!enemyBaseDir)
  58. enemyBasePosX += timeStep;
  59. else
  60. enemyBasePosX -= timeStep;
  61. var xvalue = 2;
  62. if (enemyBasePosX > xvalue) {
  63. enemyBasePosX = xvalue;
  64. enemyBaseDir = !enemyBaseDir;
  65. }
  66. if (enemyBasePosX < -xvalue) {
  67. enemyBasePosX = -xvalue;
  68. enemyBaseDir = !enemyBaseDir;
  69. }
  70. enemyBaseNode.position2D = [enemyBasePosX, 0];
  71. }
  72. self.win = function() {
  73. self.hud.updateGameText("YOU WIN!!!!");
  74. self.gameOver = true;
  75. }
  76. self.lose = function() {
  77. self.hud.updateGameText("YOU LOSE!!!!");
  78. self.gameOver = true;
  79. }
  80. function spawnPlayer() {
  81. self.playerNode = scene.createChild("Player");
  82. self.player = self.playerNode.createJSComponent("Player");
  83. }
  84. function start() {
  85. self.hud = scene.createJSComponent("HUD");
  86. spawnSpace();
  87. spawnPlayer();
  88. spawnEnemies();
  89. var musicFile = game.cache.getResource("Sound", "Music/battle.ogg");
  90. musicFile.looped = true;
  91. var musicNode = scene.createChild("MusicNode");
  92. var musicSource = musicNode.createComponent("SoundSource");
  93. musicSource.gain = .5;
  94. musicSource.soundType = Atomic.SOUND_MUSIC;
  95. musicSource.play(musicFile);
  96. }
  97. function update(timeStep) {
  98. updateEnemies(timeStep);
  99. }