From f4520bce91721fa4e962c872232b17b0c05a398b Mon Sep 17 00:00:00 2001 From: LucidCrux Date: Thu, 25 Jul 2013 02:00:41 -0600 Subject: [PATCH] speed up and bug fix --- script/engine.js | 2 +- script/outside.js | 4 +--- script/state_manager.js | 53 +++++++++++------------------------------ 3 files changed, 16 insertions(+), 43 deletions(-) diff --git a/script/engine.js b/script/engine.js index db3be3a..8944227 100644 --- a/script/engine.js +++ b/script/engine.js @@ -172,7 +172,7 @@ var Engine = { } } catch(e) { State = {}; - $SM.set('verson', Engine.VERSION); + $SM.set('version', Engine.VERSION); Engine.event('progress', 'new game'); } }, diff --git a/script/outside.js b/script/outside.js index 31764ef..5201e93 100644 --- a/script/outside.js +++ b/script/outside.js @@ -163,9 +163,7 @@ var Outside = { }, numBuilding: function(bName) { - return $SM.get('features.location.outside') && - $SM.get('game.outside.buildings') && - $SM.get('game.outside.buildings[\''+bName+'\']', true); + return $SM.get('game.outside.buildings[\''+bName+'\']', true); }, addBuilding: function(bName, num) { diff --git a/script/state_manager.js b/script/state_manager.js index 3871ca9..ac358b9 100644 --- a/script/state_manager.js +++ b/script/state_manager.js @@ -34,7 +34,7 @@ var StateManager = { 'income', 'timers', 'game', //mostly location related: fire temp, workers, population, world map, etc - 'playStats', //anything play related: play time, loads, etc + 'playStats' //anything play related: play time, loads, etc ]; for(var which in cats) { @@ -45,37 +45,18 @@ var StateManager = { $.Dispatch('stateUpdate').subscribe($SM.handleStateUpdates); }, - //create the parent of a given state, recursive as needed - createParent: function(stateName) { - var err = 0; - - //parse path to find last child - var lastDot = stateName.lastIndexOf('.'); //if ends with a dot, there is a coding bug, not like ending in a bracket, so don't account for it - if(lastDot == stateName.length) { - Engine.log('ERROR: '+stateName+' is invalid. Cannot end in a dot.'); - return; - } - var lastOB = stateName.lastIndexOf('['); - //make sure last bracket isn't just end of the line - var lastCB = stateName.substr(0, stateName.length -1).lastIndexOf(']'); - //account for state[foo][bar] double bracket and state[foo].bar - if(lastCB == lastOB - 1) lastOB = -1; - if(lastCB == lastDot -1) lastDot = -1; - //find last child or return if no more children - var cutoff = Math.max(lastDot, lastOB, lastCB); - if(cutoff <= 0) return; - - var parentPath = $SM.buildPath(stateName.substr(0,cutoff)); - - //try creating the parent - try { - eval('('+parentPath+') = {}'); - } catch (e) { - //need to go up another level and make parent of parent - $SM.createParent(stateName.substr(0,cutoff)); - //then it will definitely work if not, something is fubar - eval('('+parentPath+') = {}'); + //create all parents and then set state + createState: function(stateName, value) { + var words = stateName.split(/[.\[\]']+/); + var obj = State; + var w = null; + for(var i=0, len=words.length-1;i