diff --git a/.project b/.project index d6959e1..33ac207 100644 --- a/.project +++ b/.project @@ -5,7 +5,13 @@ + + org.eclipse.wst.jsdt.core.javascriptValidator + + + + org.eclipse.wst.jsdt.core.jsNature diff --git a/script/room.js b/script/room.js index fc588bf..55746fc 100644 --- a/script/room.js +++ b/script/room.js @@ -9,6 +9,10 @@ var Room = { _STOKE_COOLDOWN: 10, // cooldown to stoke the fire _NEED_WOOD_DELAY: 15 * 1000, // from when the stranger shows up, to when you need wood + fire:null, + temperature:null, + buttons:{}, + Craftables: { 'trap': { button: null, @@ -445,14 +449,18 @@ var Room = { if(typeof $SM.get('features.location.room') == 'undefined') { $SM.set('features.location.room', true); + $SM.set('game.builder.level', -1); $SM.set('game.room', { temperature: this.TempEnum.Cold, fire: this.FireEnum.Dead, buttons: {}, - builder: -1 }); } + Room.temperature = this.TempEnum.Cold; + Room.fire = this.FireEnum.Dead; + + // Create the room tab this.tab = Header.addLocation("A Dark Room", "room", Room); @@ -506,10 +514,10 @@ var Room = { * 3 - Sleeping * 4 - Helping */ - if($SM.get('game.room.builder') >= 0 && $SM.get('game.room.builder') < 3) { + if($SM.get('game.builder.level') >= 0 && $SM.get('game.builder.level') < 3) { Room._builderTimer = setTimeout(Room.updateBuilderState, Room._BUILDER_STATE_DELAY); } - if($SM.get('game.room.builder') == 1 && $SM.get('stores.wood', true) < 0) { + if($SM.get('game.builder.level') == 1 && $SM.get('stores.wood', true) < 0) { setTimeout(Room.unlockForest, Room._NEED_WOOD_DELAY); } setTimeout($SM.collectIncome, 1000); @@ -527,8 +535,8 @@ var Room = { Notifications.notify(Room, "the room is " + $SM.get('game.room.temperature.text')); Room.changed = false; } - if($SM.get('game.room.builder') == 3) { - $SM.add('game.room.builder', 1); + if($SM.get('game.builder.level') == 3) { + $SM.add('game.builder.level', 1); $SM.setIncome('builder', { delay: 10, stores: {'wood' : 2 } @@ -642,8 +650,8 @@ var Room = { Room.changed = true; } Notifications.notify(Room, "the fire is " + $SM.get('game.room.fire.text'), true); - if($SM.get('game.room.fire.value') > 1 && $SM.get('game.room.builder') < 0) { - $SM.set('game.room.builder', 0); + if($SM.get('game.room.fire.value') > 1 && $SM.get('game.builder.level') < 0) { + $SM.set('game.builder.level', 0); Notifications.notify(Room, "the light from the fire spills from the windows, out into the dark"); setTimeout(Room.updateBuilderState, Room._BUILDER_STATE_DELAY); } @@ -655,30 +663,33 @@ var Room = { coolFire: function() { var wood = $SM.get('stores.wood'); - if($SM.get('game.room.fire.value') <= Room.FireEnum.Flickering.value && - $SM.get('game.room.builder') > 3 && wood > 0) { + var roomFire = $SM.get('game.room.fire'); + if(roomFire.value <= Room.FireEnum.Flickering.value && + $SM.get('game.builder.level') > 3 && wood > 0) { Notifications.notify(Room, "builder stokes the fire", true); $SM.set('stores.wood', wood - 1); - $SM.set('game.room.fire', Room.FireEnum.fromInt($SM.get('game.room.fire.value') + 1)); + roomFire = $SM.setget('game.room.fire', Room.FireEnum.fromInt(roomFire.value + 1)); } - if($SM.get('game.room.fire.value') > 0) { - $SM.set('game.room.fire', Room.FireEnum.fromInt($SM.get('game.room.fire.value') - 1)); + if(roomFire.value > 0) { + $SM.set('game.room.fire', Room.FireEnum.fromInt(roomFire.value - 1)); Room._fireTimer = setTimeout(Room.coolFire, Room._FIRE_COOL_DELAY); Room.onFireChange(); } }, adjustTemp: function() { - var old = $SM.get('game.room.temperature.value'); - if($SM.get('game.room.temperature.value') > 0 && $SM.get('game.room.temperature.value') > $SM.get('game.room.fire.value')) { - $SM.set('game.room.temperature', Room.TempEnum.fromInt($SM.get('game.room.temperature.value') - 1)); - Notifications.notify(Room, "the room is " + $SM.get('game.room.temperature.text'), true); + var roomTemp = $SM.get('game.room.temperature'); + var roomFire = $SM.get('game.room.fire'); + var old = roomTemp.value; + if(roomTemp.value > 0 && roomTemp.value > roomFire.value) { + roomTemp = $SM.setget('game.room.temperature', Room.TempEnum.fromInt(roomTemp.value - 1)); + Notifications.notify(Room, "the room is " + roomTemp.text, true); } - if($SM.get('game.room.temperature.value') < 4 && $SM.get('game.room.temperature.value') < $SM.get('game.room.fire.value')) { - $SM.set('game.room.temperature', Room.TempEnum.fromInt($SM.get('game.room.temperature.value') + 1)); - Notifications.notify(Room, "the room is " + $SM.get('game.room.temperature.text'), true); + if(roomTemp.value < 4 && roomTemp.value < roomFire.value) { + roomTemp = $SM.setget('game.room.temperature', Room.TempEnum.fromInt(roomTemp.value + 1)); + Notifications.notify(Room, "the room is " + roomTemp.text, true); } - if($SM.get('game.room.temperature.value') != old) { + if(roomTemp.value != old) { Room.changed = true; } Room._tempTimer = setTimeout(Room.adjustTemp, Room._ROOM_WARM_DELAY); @@ -686,23 +697,22 @@ var Room = { unlockForest: function() { $SM.set('stores.wood', 4); - Room.updateButton(); Outside.init(); - Room.updateStoresView(); Notifications.notify(Room, "the wind howls outside"); Notifications.notify(Room, "the wood is running out"); Engine.event('progress', 'outside'); }, updateBuilderState: function() { - if($SM.get('game.room.builder') == 0) { + var lBuilder = $SM.get('game.builder.level'); + if(lBuilder == 0) { Notifications.notify(Room, "a ragged stranger stumbles through the door and collapses in the corner"); - $SM.set('game.room.builder', 1); + lBuilder = $SM.setget('game.builder.level', 1); setTimeout(Room.unlockForest, Room._NEED_WOOD_DELAY); } - else if($SM.get('game.room.builder') < 3 && $SM.get('game.room.temperature.value') >= Room.TempEnum.Warm.value) { + else if(lBuilder < 3 && $SM.get('game.room.temperature.value') >= Room.TempEnum.Warm.value) { var msg; - switch($SM.get('game.room.builder')) { + switch(lBuilder) { case 1: msg = "the stranger shivers, and mumbles quietly. her words are unintelligible."; break; @@ -711,11 +721,11 @@ var Room = { break; } Notifications.notify(Room, msg); - if($SM.get('game.room.builder') < 3) { - $SM.add('game.room.builder', 1); + if(lBuilder < 3) { + lBuilder = $SM.setget('game.builder.level', lBuilder + 1); } } - if($SM.get('game.room.builder') < 3) { + if(lBuilder < 3) { setTimeout(Room.updateBuilderState, Room._BUILDER_STATE_DELAY); } Engine.saveGame(); @@ -875,8 +885,6 @@ var Room = { $SM.add('stores[\''+thing+'\']', 1); - Room.updateBuildButtons(); - if(thing == 'compass') { Path.openPath(); } @@ -933,10 +941,7 @@ var Room = { case 'building': Outside.addBuilding(thing, 1); break; - } - - Room.updateBuildButtons(); - + } }, needsWorkshop: function(type) { @@ -944,12 +949,10 @@ var Room = { }, craftUnlocked: function(thing) { - if(typeof $SM.get('features.location.room') != 'undefined' && - typeof $SM.get('game.room.buttons') != 'undefined' && - $SM.get('game.room.buttons[\''+thing+'\']')) { + if($SM.get('game.room.buttons[\''+thing+'\']')) { return true; } - if($SM.get('game.room.builder') < 4) return false; + if($SM.get('game.builder.level') < 4) return false; var craftable = Room.Craftables[thing]; if(Room.needsWorkshop(craftable.type) && Outside.numBuilding('workshop') == 0) return false; var cost = craftable.cost(); @@ -970,9 +973,7 @@ var Room = { }, buyUnlocked: function(thing) { - if(typeof $SM.get('features.location.room') != 'undefined' && - typeof $SM.get('game.room.buttons') != 'undefined' && - $SM.get('game.room.buttons[\''+thing+'\']')) { + if($SM.get('game.room.buttons[\''+thing+'\']')) { return true; } else if(Outside.numBuilding('trading post') > 0) { if(thing == 'compass' || $SM.get('stores[\''+thing+'\']')) { diff --git a/script/state_manager.js b/script/state_manager.js index ac358b9..5057b87 100644 --- a/script/state_manager.js +++ b/script/state_manager.js @@ -147,7 +147,7 @@ var StateManager = { //return state, undefined or 0 get: function(stateName, requestZero) { var whichState = null; - var fullPath = $SM.buildPath(stateName, name); + var fullPath = $SM.buildPath(stateName); //catch errors if parent of state doesn't exist try{ @@ -161,6 +161,13 @@ var StateManager = { else return whichState; }, + //mainly for local copy use, add(M) can fail so we can't shortcut them + //since set does not fail, we know state exists and can simply return the object + setget: function(stateName, value, noEvent){ + $SM.set(stateName, value, noEvent); + return eval('('+$SM.buildPath(stateName)+')'); + }, + remove: function(stateName, noEvent) { var whichState = $SM.buildPath(whichState); try{