mirror of
https://github.com/doublespeakgames/adarkroom.git
synced 2026-05-28 00:01:54 +08:00
Check for delayed events
This triggers onload for all those events whose (possible) reward is registered with a time delay.
This commit is contained in:
committed by
Blake Grotewold
parent
cb717b41d0
commit
da0d39b579
+55
-5
@@ -31,10 +31,14 @@ var Events = {
|
||||
|
||||
//subscribe to stateUpdates
|
||||
$.Dispatch('stateUpdate').subscribe(Events.handleStateUpdates);
|
||||
|
||||
//check for stored delayed events
|
||||
Events.initDelay();
|
||||
},
|
||||
|
||||
options: {}, // Nothing for now
|
||||
|
||||
delayState: 'wait',
|
||||
activeScene: null,
|
||||
|
||||
loadScene: function(name) {
|
||||
@@ -42,6 +46,13 @@ var Events = {
|
||||
Events.activeScene = name;
|
||||
var scene = Events.activeEvent().scenes[name];
|
||||
|
||||
// Scene reward
|
||||
if(scene.reward) {
|
||||
$SM.addM('stores', scene.reward);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// onLoad
|
||||
if(scene.onLoad) {
|
||||
scene.onLoad();
|
||||
@@ -52,11 +63,6 @@ var Events = {
|
||||
Notifications.notify(null, scene.notification);
|
||||
}
|
||||
|
||||
// Scene reward
|
||||
if(scene.reward) {
|
||||
$SM.addM('stores', scene.reward);
|
||||
}
|
||||
|
||||
$('#description', Events.eventPanel()).empty();
|
||||
$('#buttons', Events.eventPanel()).empty();
|
||||
if(scene.combat) {
|
||||
@@ -884,5 +890,49 @@ var Events = {
|
||||
if((e.category == 'stores' || e.category == 'income') && Events.activeEvent() != null){
|
||||
Events.updateButtons();
|
||||
}
|
||||
},
|
||||
|
||||
initDelay: function(){
|
||||
if($SM.get(Events.delayState)){
|
||||
Events.recallDelay(Events.delayState, Events);
|
||||
}
|
||||
},
|
||||
|
||||
recallDelay: function(stateName, target){
|
||||
var state = $SM.get(stateName);
|
||||
for(var i in state){
|
||||
if(typeof(state[i]) == 'object'){
|
||||
Events.recallDelay(stateName +'["'+ i +'"]', target[i]);
|
||||
} else {
|
||||
if(typeof target[i] == 'function'){
|
||||
target[i]();
|
||||
} else {
|
||||
$SM.remove(stateName)
|
||||
}
|
||||
}
|
||||
}
|
||||
if($.isEmptyObject(state)){
|
||||
$SM.remove(stateName);
|
||||
}
|
||||
},
|
||||
|
||||
saveDelay: function(action, stateName, delay){
|
||||
var state = Events.delayState + '.' + stateName;
|
||||
if(delay){
|
||||
$SM.set(state, delay);
|
||||
} else {
|
||||
var delay = $SM.get(state, true)
|
||||
}
|
||||
var time = Engine.setInterval(function(){
|
||||
// update state every half second
|
||||
$SM.set(state, ($SM.get(state) - 0.5), true);
|
||||
}, 500);
|
||||
Engine.setTimeout(function(){
|
||||
// outcome realizes. erase countdown
|
||||
window.clearInterval(time);
|
||||
$SM.remove(state);
|
||||
$SM.removeBranch(Events.delayState);
|
||||
action();
|
||||
}, delay * 1000);
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user