Files
adarkroom/script/outside.js
T

616 lines
17 KiB
JavaScript
Raw Normal View History

2013-07-03 07:56:13 -07:00
/**
* Module that registers the outdoors functionality
*/
var Outside = {
2014-02-07 18:26:03 +01:00
name: _("Outside"),
2013-07-03 07:56:13 -07:00
_GATHER_DELAY: 60,
_TRAPS_DELAY: 90,
_POP_DELAY: [0.5, 3],
_INCOME: {
'gatherer': {
2014-02-07 18:26:03 +01:00
name: _('gatherer'),
2013-07-03 07:56:13 -07:00
delay: 10,
stores: {
'wood': 1
}
},
'hunter': {
2014-02-07 18:26:03 +01:00
name: _('hunter'),
2013-07-03 07:56:13 -07:00
delay: 10,
stores: {
'fur': 0.5,
'meat': 0.5
}
},
'trapper': {
2014-02-07 18:26:03 +01:00
name: _('trapper'),
2013-07-03 07:56:13 -07:00
delay: 10,
stores: {
'meat': -1,
'bait': 1
}
},
'tanner': {
2014-02-07 18:26:03 +01:00
name: _('tanner'),
2013-07-03 07:56:13 -07:00
delay: 10,
stores: {
'fur': -5,
'leather': 1
}
},
'charcutier': {
2014-02-07 18:26:03 +01:00
name: _('charcutier'),
2013-07-03 07:56:13 -07:00
delay: 10,
stores: {
'meat': -5,
'wood': -5,
'cured meat': 1
}
},
'iron miner': {
2014-02-07 18:26:03 +01:00
name: _('iron miner'),
2013-07-03 07:56:13 -07:00
delay: 10,
stores: {
'cured meat': -1,
'iron': 1
}
},
'coal miner': {
2014-02-07 18:26:03 +01:00
name: _('coal miner'),
2013-07-03 07:56:13 -07:00
delay: 10,
stores: {
'cured meat': -1,
'coal': 1
}
},
'sulphur miner': {
2014-02-07 18:26:03 +01:00
name: _('sulphur miner'),
2013-07-03 07:56:13 -07:00
delay: 10,
stores: {
'cured meat': -1,
'sulphur': 1
}
},
'steelworker': {
2014-02-07 18:26:03 +01:00
name: _('steelworker'),
2013-07-03 07:56:13 -07:00
delay: 10,
stores: {
'iron': -1,
'coal': -1,
'steel': 1
}
},
'armourer': {
2014-02-07 18:26:03 +01:00
name: _('armourer'),
2013-07-03 07:56:13 -07:00
delay: 10,
stores: {
'steel': -1,
'sulphur': -1,
'bullets': 1
}
}
},
TrapDrops: [
{
rollUnder: 0.5,
name: 'fur',
2014-02-04 22:27:00 +01:00
message: _('scraps of fur')
2013-07-03 07:56:13 -07:00
},
{
rollUnder: 0.75,
name: 'meat',
2014-02-04 22:27:00 +01:00
message: _('bits of meat')
2013-07-03 07:56:13 -07:00
},
{
rollUnder: 0.85,
name: 'scales',
2014-02-04 22:27:00 +01:00
message: _('strange scales')
2013-07-03 07:56:13 -07:00
},
{
rollUnder: 0.93,
name: 'teeth',
2014-02-04 22:27:00 +01:00
message: _('scattered teeth')
2013-07-03 07:56:13 -07:00
},
{
rollUnder: 0.995,
name: 'cloth',
2014-02-04 22:27:00 +01:00
message: _('tattered cloth')
2013-07-03 07:56:13 -07:00
},
{
rollUnder: 1.0,
name: 'charm',
2014-02-04 22:27:00 +01:00
message: _('a crudely made charm')
2013-07-03 07:56:13 -07:00
}
],
init: function(options) {
this.options = $.extend(
this.options,
options
);
if(Engine._debug) {
this._GATHER_DELAY = 0;
this._TRAPS_DELAY = 0;
}
// Create the outside tab
2014-02-05 17:06:30 +01:00
this.tab = Header.addLocation(_("A Silent Forest"), "outside", Outside);
2013-07-03 07:56:13 -07:00
// Create the Outside panel
this.panel = $('<div>').attr('id', "outsidePanel")
.addClass('location')
.appendTo('div#locationSlider');
//subscribe to stateUpdates
$.Dispatch('stateUpdate').subscribe(Outside.handleStateUpdates);
if(typeof $SM.get('features.location.outside') == 'undefined') {
$SM.set('features.location.outside', true);
if(!$SM.get('game.buildings')) $SM.set('game.buildings', {});
if(!$SM.get('game.population')) $SM.set('game.population', 0);
if(!$SM.get('game.workers')) $SM.set('game.workers', {});
2013-07-03 07:56:13 -07:00
}
this.updateVillage();
Outside.updateWorkersView();
Engine.updateSlider();
// Create the gather button
new Button.Button({
id: 'gatherButton',
2014-02-04 22:27:00 +01:00
text: _("gather wood"),
2013-07-03 07:56:13 -07:00
click: Outside.gatherWood,
cooldown: Outside._GATHER_DELAY,
width: '80px'
}).appendTo('div#outsidePanel');
},
getMaxPopulation: function() {
return $SM.get('game.buildings["hut"]', true) * 4;
2013-07-03 07:56:13 -07:00
},
increasePopulation: function() {
var space = Outside.getMaxPopulation() - $SM.get('game.population');
2013-07-03 07:56:13 -07:00
if(space > 0) {
var num = Math.floor(Math.random()*(space/2) + space/2);
2014-12-26 13:40:51 +09:00
if(num === 0) num = 1;
2013-07-03 07:56:13 -07:00
if(num == 1) {
2014-02-04 22:27:00 +01:00
Notifications.notify(null, _('a stranger arrives in the night'));
2013-07-03 07:56:13 -07:00
} else if(num < 5) {
2014-02-04 22:27:00 +01:00
Notifications.notify(null, _('a weathered family takes up in one of the huts.'));
2013-07-03 07:56:13 -07:00
} else if(num < 10) {
2014-02-04 22:27:00 +01:00
Notifications.notify(null, _('a small group arrives, all dust and bones.'));
2013-07-03 07:56:13 -07:00
} else if(num < 30) {
2014-02-04 22:27:00 +01:00
Notifications.notify(null, _('a convoy lurches in, equal parts worry and hope.'));
2013-07-03 07:56:13 -07:00
} else {
2014-02-04 22:27:00 +01:00
Notifications.notify(null, _("the town's booming. word does get around."));
2013-07-03 07:56:13 -07:00
}
Engine.log('population increased by ' + num);
$SM.add('game.population', num);
2013-07-03 07:56:13 -07:00
}
Outside.schedulePopIncrease();
},
killVillagers: function(num) {
$SM.add('game.population', num * -1);
if($SM.get('game.population') < 0) {
$SM.set('game.population', 0);
2013-07-03 07:56:13 -07:00
}
var remaining = Outside.getNumGatherers();
if(remaining < 0) {
var gap = -remaining;
for(var k in $SM.get('game.workers')) {
2014-12-26 13:40:51 +09:00
var numWorkers = $SM.get('game.workers["'+k+'"]');
if(numWorkers < gap) {
gap -= numWorkers;
$SM.set('game.workers["'+k+'"]', 0);
2013-07-03 07:56:13 -07:00
} else {
$SM.add('game.workers["'+k+'"]', gap * -1);
2013-07-03 07:56:13 -07:00
break;
}
}
}
},
schedulePopIncrease: function() {
var nextIncrease = Math.floor(Math.random()*(Outside._POP_DELAY[1] - Outside._POP_DELAY[0])) + Outside._POP_DELAY[0];
2014-07-13 11:18:33 -04:00
Engine.log('next population increase scheduled in ' + nextIncrease + ' minutes');
2015-02-06 22:35:53 -05:00
Outside._popTimeout = Engine.setTimeout(Outside.increasePopulation, nextIncrease * 60 * 1000);
2013-07-03 07:56:13 -07:00
},
updateWorkersView: function() {
var workers = $('div#workers');
2014-02-04 22:27:00 +01:00
// If our population is 0 and we don't already have a workers view,
// there's nothing to do here.
2014-12-26 13:40:51 +09:00
if(!workers.length && $SM.get('game.population') === 0) return;
2014-02-04 22:27:00 +01:00
2013-07-03 07:56:13 -07:00
var needsAppend = false;
2014-12-26 13:40:51 +09:00
if(workers.length === 0) {
2013-07-03 07:56:13 -07:00
needsAppend = true;
workers = $('<div>').attr('id', 'workers').css('opacity', 0);
}
var numGatherers = $SM.get('game.population');
2013-07-03 07:56:13 -07:00
var gatherer = $('div#workers_row_gatherer', workers);
for(var k in $SM.get('game.workers')) {
var workerCount = $SM.get('game.workers["'+k+'"]');
2013-07-03 07:56:13 -07:00
var row = $('div#workers_row_' + k.replace(' ', '-'), workers);
2014-12-26 13:40:51 +09:00
if(row.length === 0) {
row = Outside.makeWorkerRow(k, workerCount);
2013-07-03 07:56:13 -07:00
var curPrev = null;
workers.children().each(function(i) {
var child = $(this);
var cName = child.attr('id').substring(12).replace('-', ' ');
if(cName != 'gatherer') {
if(cName < k && (curPrev == null || cName > curPrev)) {
curPrev = cName;
}
}
});
2014-12-26 13:40:51 +09:00
if(curPrev == null && gatherer.length === 0) {
2013-07-03 07:56:13 -07:00
row.prependTo(workers);
}
else if(curPrev == null)
{
row.insertAfter(gatherer);
}
else
{
row.insertAfter(workers.find('#workers_row_' + curPrev.replace(' ', '-')));
}
} else {
$('div#' + row.attr('id') + ' > div.row_val > span', workers).text(workerCount);
2013-07-03 07:56:13 -07:00
}
numGatherers -= workerCount;
2014-12-26 13:40:51 +09:00
if(workerCount === 0) {
2013-07-03 07:56:13 -07:00
$('.dnBtn', row).addClass('disabled');
$('.dnManyBtn', row).addClass('disabled');
2013-07-03 07:56:13 -07:00
} else {
$('.dnBtn', row).removeClass('disabled');
$('.dnManyBtn', row).removeClass('disabled');
2013-07-03 07:56:13 -07:00
}
}
2014-12-26 13:40:51 +09:00
if(gatherer.length === 0) {
2013-07-03 07:56:13 -07:00
gatherer = Outside.makeWorkerRow('gatherer', numGatherers);
gatherer.prependTo(workers);
} else {
$('div#workers_row_gatherer > div.row_val > span', workers).text(numGatherers);
}
2014-12-26 13:40:51 +09:00
if(numGatherers === 0) {
2013-07-03 07:56:13 -07:00
$('.upBtn', '#workers').addClass('disabled');
$('.upManyBtn', '#workers').addClass('disabled');
2013-07-03 07:56:13 -07:00
} else {
$('.upBtn', '#workers').removeClass('disabled');
$('.upManyBtn', '#workers').removeClass('disabled');
2013-07-03 07:56:13 -07:00
}
if(needsAppend && workers.children().length > 0) {
workers.appendTo('#outsidePanel').animate({opacity:1}, 300, 'linear');
}
},
getNumGatherers: function() {
var num = $SM.get('game.population');
for(var k in $SM.get('game.workers')) {
num -= $SM.get('game.workers["'+k+'"]');
2013-07-03 07:56:13 -07:00
}
return num;
},
2014-02-07 18:26:03 +01:00
makeWorkerRow: function(key, num) {
name = Outside._INCOME[key].name;
if(!name) name = key;
2013-07-03 07:56:13 -07:00
var row = $('<div>')
2014-02-07 18:26:03 +01:00
.attr('key', key)
.attr('id', 'workers_row_' + key.replace(' ','-'))
2013-07-03 07:56:13 -07:00
.addClass('workerRow');
$('<div>').addClass('row_key').text(name).appendTo(row);
var val = $('<div>').addClass('row_val').appendTo(row);
$('<span>').text(num).appendTo(val);
2014-02-07 18:26:03 +01:00
if(key != 'gatherer') {
2014-07-13 11:18:33 -04:00
$('<div>').addClass('upManyBtn').appendTo(val).click([10], Outside.increaseWorker);
$('<div>').addClass('upBtn').appendTo(val).click([1], Outside.increaseWorker);
$('<div>').addClass('dnBtn').appendTo(val).click([1], Outside.decreaseWorker);
$('<div>').addClass('dnManyBtn').appendTo(val).click([10], Outside.decreaseWorker);
2013-07-03 07:56:13 -07:00
}
$('<div>').addClass('clear').appendTo(row);
var tooltip = $('<div>').addClass('tooltip bottom right').appendTo(row);
2014-02-07 18:26:03 +01:00
var income = Outside._INCOME[key];
2013-07-03 07:56:13 -07:00
for(var s in income.stores) {
var r = $('<div>').addClass('storeRow');
2014-02-07 18:26:03 +01:00
$('<div>').addClass('row_key').text(_(s)).appendTo(r);
2013-07-03 07:56:13 -07:00
$('<div>').addClass('row_val').text(Engine.getIncomeMsg(income.stores[s], income.delay)).appendTo(r);
r.appendTo(tooltip);
}
return row;
},
increaseWorker: function(btn) {
2014-02-07 18:26:03 +01:00
var worker = $(this).closest('.workerRow').attr('key');
2013-07-03 07:56:13 -07:00
if(Outside.getNumGatherers() > 0) {
2014-07-13 11:18:33 -04:00
var increaseAmt = Math.min(Outside.getNumGatherers(), btn.data);
Engine.log('increasing ' + worker + ' by ' + increaseAmt);
$SM.add('game.workers["'+worker+'"]', increaseAmt);
2013-07-03 07:56:13 -07:00
}
},
decreaseWorker: function(btn) {
2014-02-07 18:26:03 +01:00
var worker = $(this).closest('.workerRow').attr('key');
if($SM.get('game.workers["'+worker+'"]') > 0) {
2014-07-13 11:18:33 -04:00
var decreaseAmt = Math.min($SM.get('game.workers["'+worker+'"]') || 0, btn.data);
Engine.log('decreasing ' + worker + ' by ' + decreaseAmt);
$SM.add('game.workers["'+worker+'"]', decreaseAmt * -1);
}
},
2013-07-03 07:56:13 -07:00
updateVillageRow: function(name, num, village) {
var id = 'building_row_' + name.replace(' ', '-');
var row = $('div#' + id, village);
2014-12-26 13:40:51 +09:00
if(row.length === 0 && num > 0) {
2013-10-10 20:49:19 -04:00
row = $('<div>').attr('id', id).addClass('storeRow');
2014-02-07 18:26:03 +01:00
$('<div>').addClass('row_key').text(_(name)).appendTo(row);
2013-10-10 20:49:19 -04:00
$('<div>').addClass('row_val').text(num).appendTo(row);
$('<div>').addClass('clear').appendTo(row);
var curPrev = null;
village.children().each(function(i) {
var child = $(this);
if(child.attr('id') != 'population') {
var cName = child.attr('id').substring(13).replace('-', ' ');
if(cName < name && (curPrev == null || cName > curPrev)) {
curPrev = cName;
2013-07-03 07:56:13 -07:00
}
}
2013-10-10 20:49:19 -04:00
});
if(curPrev == null) {
row.prependTo(village);
} else {
row.insertAfter('#building_row_' + curPrev.replace(' ', '-'));
2013-07-03 07:56:13 -07:00
}
2013-10-10 20:49:19 -04:00
} else if(num > 0) {
$('div#' + row.attr('id') + ' > div.row_val', village).text(num);
2014-12-26 13:40:51 +09:00
} else if(num === 0) {
2013-10-10 20:49:19 -04:00
row.remove();
}
2013-07-03 07:56:13 -07:00
},
2013-10-29 18:39:00 -04:00
updateVillage: function(ignoreStores) {
2013-07-03 07:56:13 -07:00
var village = $('div#village');
2013-10-10 20:49:19 -04:00
var population = $('div#population');
2013-07-03 07:56:13 -07:00
var needsAppend = false;
2014-12-26 13:40:51 +09:00
if(village.length === 0) {
2013-07-03 07:56:13 -07:00
needsAppend = true;
village = $('<div>').attr('id', 'village').css('opacity', 0);
population = $('<div>').attr('id', 'population').appendTo(village);
}
for(var k in $SM.get('game.buildings')) {
2013-07-03 07:56:13 -07:00
if(k == 'trap') {
var numTraps = $SM.get('game.buildings["'+k+'"]');
2013-07-24 17:41:36 -06:00
var numBait = $SM.get('stores.bait', true);
2013-07-03 07:56:13 -07:00
var traps = numTraps - numBait;
traps = traps < 0 ? 0 : traps;
Outside.updateVillageRow(k, traps, village);
Outside.updateVillageRow('baited trap', numBait > numTraps ? numTraps : numBait, village);
} else {
if(Outside.checkWorker(k)) {
Outside.updateWorkersView();
}
Outside.updateVillageRow(k, $SM.get('game.buildings["'+k+'"]'), village);
2013-07-03 07:56:13 -07:00
}
}
2014-10-13 17:30:28 +02:00
/// TRANSLATORS : pop is short for population.
2014-06-19 10:18:56 +03:00
population.text(_('pop ') + $SM.get('game.population') + '/' + this.getMaxPopulation());
2013-07-03 07:56:13 -07:00
var hasPeeps;
2014-12-26 13:40:51 +09:00
if($SM.get('game.buildings["hut"]', true) === 0) {
2013-07-03 07:56:13 -07:00
hasPeeps = false;
village.addClass('noHuts');
} else {
hasPeeps = true;
village.removeClass('noHuts');
}
if(needsAppend && village.children().length > 1) {
village.appendTo('#outsidePanel');
village.animate({opacity:1}, 300, 'linear');
}
if(hasPeeps && typeof Outside._popTimeout == 'undefined') {
Outside.schedulePopIncrease();
}
this.setTitle();
2013-10-29 18:39:00 -04:00
if(!ignoreStores && Engine.activeModule === Outside && village.children().length > 1) {
$('#storesContainer').css({top: village.height() + 26 + 'px'});
}
2013-07-03 07:56:13 -07:00
},
checkWorker: function(name) {
var jobMap = {
'lodge': ['hunter', 'trapper'],
'tannery': ['tanner'],
'smokehouse': ['charcutier'],
'iron mine': ['iron miner'],
'coal mine': ['coal miner'],
'sulphur mine': ['sulphur miner'],
'steelworks': ['steelworker'],
'armoury' : ['armourer']
2013-10-10 20:49:19 -04:00
};
2013-07-03 07:56:13 -07:00
var jobs = jobMap[name];
var added = false;
if(typeof jobs == 'object') {
for(var i = 0, len = jobs.length; i < len; i++) {
var job = jobs[i];
if(typeof $SM.get('game.buildings["'+name+'"]') == 'number' &&
typeof $SM.get('game.workers["'+job+'"]') != 'number') {
2013-10-10 20:49:19 -04:00
Engine.log('adding ' + job + ' to the workers list');
$SM.set('game.workers["'+job+'"]', 0);
2013-07-03 07:56:13 -07:00
added = true;
}
}
}
return added;
},
updateVillageIncome: function() {
for(var worker in Outside._INCOME) {
var income = Outside._INCOME[worker];
var num = worker == 'gatherer' ? Outside.getNumGatherers() : $SM.get('game.workers["'+worker+'"]');
2013-07-03 07:56:13 -07:00
if(typeof num == 'number') {
var stores = {};
if(num < 0) num = 0;
var tooltip = $('.tooltip', 'div#workers_row_' + worker.replace(' ', '-'));
tooltip.empty();
var needsUpdate = false;
2013-07-24 17:41:36 -06:00
var curIncome = $SM.getIncome(worker);
2013-07-03 07:56:13 -07:00
for(var store in income.stores) {
stores[store] = income.stores[store] * num;
if(curIncome[store] != stores[store]) needsUpdate = true;
var row = $('<div>').addClass('storeRow');
2014-02-07 18:26:03 +01:00
$('<div>').addClass('row_key').text(_(store)).appendTo(row);
2013-07-03 07:56:13 -07:00
$('<div>').addClass('row_val').text(Engine.getIncomeMsg(stores[store], income.delay)).appendTo(row);
row.appendTo(tooltip);
}
if(needsUpdate) {
2013-07-24 17:41:36 -06:00
$SM.setIncome(worker, {
2013-07-03 07:56:13 -07:00
delay: income.delay,
stores: stores
});
}
}
}
Room.updateIncomeView();
},
updateTrapButton: function() {
var btn = $('div#trapsButton');
if($SM.get('game.buildings["trap"]', true) > 0) {
2014-12-26 13:40:51 +09:00
if(btn.length === 0) {
2013-07-03 07:56:13 -07:00
new Button.Button({
id: 'trapsButton',
2014-02-05 17:06:30 +01:00
text: _("check traps"),
2013-07-03 07:56:13 -07:00
click: Outside.checkTraps,
cooldown: Outside._TRAPS_DELAY,
width: '80px'
}).appendTo('div#outsidePanel');
} else {
Button.setDisabled(btn, false);
}
} else {
if(btn.length > 0) {
Button.setDisabled(btn, true);
}
}
},
setTitle: function() {
var numHuts = $SM.get('game.buildings["hut"]', true);
2013-07-03 07:56:13 -07:00
var title;
2014-12-26 13:40:51 +09:00
if(numHuts === 0) {
2014-02-05 17:06:30 +01:00
title = _("A Silent Forest");
2013-07-03 07:56:13 -07:00
} else if(numHuts == 1) {
2014-02-05 17:06:30 +01:00
title = _("A Lonely Hut");
2013-07-03 07:56:13 -07:00
} else if(numHuts <= 4) {
2014-02-05 17:06:30 +01:00
title = _("A Tiny Village");
2013-07-03 07:56:13 -07:00
} else if(numHuts <= 8) {
2014-02-05 17:06:30 +01:00
title = _("A Modest Village");
2013-07-03 07:56:13 -07:00
} else if(numHuts <= 14) {
2014-02-05 17:06:30 +01:00
title = _("A Large Village");
2013-07-03 07:56:13 -07:00
} else {
2014-02-05 17:06:30 +01:00
title = _("A Raucous Village");
2013-07-03 07:56:13 -07:00
}
if(Engine.activeModule == this) {
document.title = title;
}
$('#location_outside').text(title);
},
onArrival: function(transition_diff) {
2013-07-03 07:56:13 -07:00
Outside.setTitle();
if(!$SM.get('game.outside.seenForest')) {
2014-02-05 17:06:30 +01:00
Notifications.notify(Outside, _("the sky is grey and the wind blows relentlessly"));
$SM.set('game.outside.seenForest', true);
2013-07-03 07:56:13 -07:00
}
Outside.updateTrapButton();
2013-10-29 18:39:00 -04:00
Outside.updateVillage(true);
Engine.moveStoresView($('#village'), transition_diff);
2013-07-03 07:56:13 -07:00
},
gatherWood: function() {
2014-02-05 17:06:30 +01:00
Notifications.notify(Outside, _("dry brush and dead branches litter the forest floor"));
var gatherAmt = $SM.get('game.buildings["cart"]', true) > 0 ? 50 : 10;
2013-07-24 17:41:36 -06:00
$SM.add('stores.wood', gatherAmt);
2013-07-03 07:56:13 -07:00
},
checkTraps: function() {
var drops = {};
var msg = [];
var numTraps = $SM.get('game.buildings["trap"]', true);
2013-07-24 17:41:36 -06:00
var numBait = $SM.get('stores.bait', true);
2013-07-03 07:56:13 -07:00
var numDrops = numTraps + (numBait < numTraps ? numBait : numTraps);
for(var i = 0; i < numDrops; i++) {
var roll = Math.random();
for(var j in Outside.TrapDrops) {
var drop = Outside.TrapDrops[j];
if(roll < drop.rollUnder) {
2013-10-10 20:49:19 -04:00
var num = drops[drop.name];
2013-07-03 07:56:13 -07:00
if(typeof num == 'undefined') {
num = 0;
msg.push(drop.message);
}
drops[drop.name] = num + 1;
break;
}
}
}
/// TRANSLATORS : Mind the whitespace at the end.
2014-02-05 17:06:30 +01:00
var s = _('the traps contain ');
2013-07-03 07:56:13 -07:00
for(var i = 0, len = msg.length; i < len; i++) {
if(len > 1 && i > 0 && i < len - 1) {
s += ", ";
} else if(len > 1 && i == len - 1) {
/// TRANSLATORS : Mind the whitespaces at the beginning and end.
2014-02-05 17:06:30 +01:00
s += _(" and ");
2013-07-03 07:56:13 -07:00
}
s += msg[i];
}
var baitUsed = numBait < numTraps ? numBait : numTraps;
drops['bait'] = -baitUsed;
Notifications.notify(Outside, s);
2013-07-24 17:41:36 -06:00
$SM.addM('stores', drops);
},
handleStateUpdates: function(e){
if(e.category == 'stores'){
2013-07-24 17:41:36 -06:00
Outside.updateVillage();
2014-12-26 13:40:51 +09:00
} else if(e.stateName.indexOf('game.workers') === 0 || e.stateName.indexOf('game.population') === 0){
Outside.updateVillage();
Outside.updateWorkersView();
Outside.updateVillageIncome();
2014-12-26 13:40:51 +09:00
}
}
2014-07-13 11:18:33 -04:00
};