Browse Source

Brute force cleanup (WIP)

Josh Engebretson 10 years ago
parent
commit
32c968a335

+ 13 - 1
NewSpaceGame/Resources/Components/Bullet.js

@@ -80,6 +80,12 @@ function updatePlayerBullet() {
 
             enemy.onHit();
 
+            enemy = null;
+
+            Atomic.getVM().gC();
+
+            game.dumpMetrics();
+
             return true;
         }
 
@@ -103,6 +109,12 @@ function updatePlayerBullet() {
 
 function update(timeStep) {
 
+  if (!SpaceGame)
+  {
+    Atomic.destroy(node);
+    return;
+  }
+
     var speed = self.isPlayer ? 8 : 5;
     speed *= timeStep;
     node.translate2D([0, speed]);
@@ -118,4 +130,4 @@ function update(timeStep) {
     }
 
 
-}
+}

+ 2 - 5
NewSpaceGame/Resources/Components/CapitalShip.js

@@ -1,6 +1,6 @@
 var game = Atomic.game;
 var node = self.node;
-var scene = game.scene;
+var scene = SpaceGame.scene;
 
 self.allowShoot = true;
 self.shootDelta = 0;
@@ -10,13 +10,10 @@ self.health = 10;
 self.onHit = function(pos) {
 
 
-    var expNode = game.scene.createChild("Explosion");
+    var expNode = 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--;

+ 5 - 5
NewSpaceGame/Resources/Components/Enemy.js

@@ -9,12 +9,12 @@ var moveDelta = 0;
 var dead = false;
 
 self.onHit = function() {
-    
-    var expNode = game.scene.createChild("Explosion");
+
+    var expNode = SpaceGame.myscene.createChild("Explosion");
     var exp = expNode.createJSComponent("Explosion");
-    exp.init(node.worldPosition2D);    
+    exp.init(node.worldPosition2D);
     SpaceGame.removeEnemy(self);
-    
+
 }
 
 function start() {
@@ -54,4 +54,4 @@ function update(timeStep) {
     pos[1] += Math.sin(moveDelta) * .1;
     node.position2D = pos;
 
-}
+}

+ 1 - 1
NewSpaceGame/Resources/Components/HUD.js

@@ -11,7 +11,7 @@ layout.load("UI/Hud.ui.txt");
 layout.setSize(1280, 720);
 view.addChild(layout);
 
-game.viewport.rect = layout.getWidget("viewport").rect;
+SpaceGame.viewport.rect = layout.getWidget("viewport").rect;
 
 var scoretext = layout.getWidget("scoretext");
 

+ 2 - 2
NewSpaceGame/Resources/Components/Player.js

@@ -11,7 +11,7 @@ self.health = 10;
 
 self.onHit = function() {
 
-    var expNode = game.scene.createChild("Explosion");
+    var expNode = SpaceGame.myscene.createChild("Explosion");
     var exp = expNode.createJSComponent("Explosion");
     exp.init(node.worldPosition2D);
 
@@ -96,4 +96,4 @@ function update(timeStep) {
     if (self.allowMove)
         moveShip(timeStep);
 
-}
+}

+ 22 - 6
NewSpaceGame/Resources/Components/SpaceGame.js

@@ -33,13 +33,10 @@ self.spawnBullet = function(pos, isPlayer) {
 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() {
@@ -70,7 +67,8 @@ function spawnEnemies() {
         for (var x = 0; x < 12; x++) {
 
             var enemyNode = enemyBaseNode.createChild("Enemy");
-            enemy = enemyNode.createJSComponent("Enemy");
+            // nasty, a lack of var was holding a global reference, hm
+            var enemy = enemyNode.createJSComponent("Enemy");
             enemy.spriteName = Math.random() < .85 ? "spaceship_louse" : "spaceship_scarab";
             enemy.spawnPosition = [pos[0], pos[1]];
             self.enemies.push(enemy);
@@ -112,6 +110,23 @@ self.cleanup = function() {
 
   game.renderer.setViewport(1, null);
 
+  Atomic.destroy(self.playerNode);
+  self.player = self.playerNode = null;
+
+  Atomic.destroy(self.hud.node);
+  self.hud = null;
+
+  for (var i = 0; i < self.enemies.length; i++) {
+    Atomic.destroy(self.enemies[i].node);
+  }
+
+  self.enemies = [];
+
+  Atomic.destroy(self.node);
+
+  SpaceGame = null;
+
+
 }
 
 self.win = function() {
@@ -175,7 +190,8 @@ function createScene() {
 
 function start() {
 
-    self.hud = self.myscene.createJSComponent("HUD");
+    var hudnode = self.myscene.createChild();
+    self.hud = hudnode.createJSComponent("HUD");
 
     spawnPlayer();
     spawnEnemies();

+ 8 - 1
NewSpaceGame/Resources/UI/mainMenu.js

@@ -30,12 +30,19 @@ exports.init = function() {
   window.getWidget("new_game").onClick = function () {
 
     closeWindow();
-    
+
   	var node = game.scene.createChild("SpaceGame");
   	node.createJSComponent("SpaceGame");
 
   }
 
+  window.getWidget("about").onClick = function () {
+
+    game.dumpMetrics();
+
+  }
+
+
 }
 
 exports.shutdown = function() {

+ 1 - 1
NewSpaceGame/Resources/UI/mainMenu.ui.txt

@@ -8,7 +8,7 @@ TBLayout: axis: y, size: available
 		@include definitions>menubutton
 	TBButton: text: "High Scores"
 		@include definitions>menubutton
-	TBButton: text: "About"
+	TBButton: text: "About", id: "about"
 		@include definitions>menubutton
 	TBButton: text: "Quit"
 		@include definitions>menubutton

+ 1 - 7
SpaceGame/Resources/Components/HUD.js

@@ -6,14 +6,9 @@ var UIButton = Atomic.UIButton;
 var UITextField = Atomic.UITextField;
 var UILayout = Atomic.UILayout;
 
-
-var layout = new Atomic.UILayout();
-layout.layoutDistribution = UI.LAYOUT_DISTRIBUTION_AVAILABLE;
-layout.layoutSize = UI.LAYOUT_SIZE_AVAILABLE;
+var layout = new Atomic.UIWidget();
 layout.load("UI/Hud.ui.txt");
-
 layout.setSize(1280, 720);
-
 view.addChild(layout);
 
 game.viewport.rect = layout.getWidget("viewport").rect;
@@ -22,7 +17,6 @@ var scoretext = layout.getWidget("scoretext");
 
 //UI.debugShowSettingsWindow(view);
 
-
 self.updateScore = function (value) {
 
 	scoretext.text = "Score: " + value;