Pour la temporisation j'utilise un ticker global pour le jeu
la handler_pool() c'est basiquement un objet qui stocke des fonctions et qui les appelle quand on le trigger().
ah et je vois que dans la fn tick j'oublie de reassigner tid au nouveau timeout pour pouvoir le clear (le clear, dans une fonction stop, n'est pas encore présent)
(function (GC) {
'use strict';
var API = {};
// Ticker speed in ms
var persec = 4;
var speed = 1000 / persec;
// Les triggers sont appelés dans cet ordre là
var triggers = ['ontick','cooldown'];
var count = 0;
var ticker = handler_pool();
var tid;
ticker.addHandler('ontick',function(){
console.log('----------------------------------------------------------------- LOOP');
});
var tick = function() {
count += 1;
each(function(ev){ ticker.trigger(ev,count);}, triggers);
setTimeout(tick,speed);
};
API.registerCooldown = function(spell) {
var trigger_id;
var unreg = function(){
if(spell.decreaseCD()) {
ticker.removeHandler(trigger_id);
}
};
trigger_id = ticker.addHandler('cooldown', unreg);
return trigger_id;
}
API.onTick = function(fn) {
return ticker.addHandler('ontick',fn);
};
API.removeHandler = function(id) {
return ticker.removeHandler(id);
};
API.getSecs = function(remcount) {
return remcount / persec;
};
API.start = function() {
tid = setTimeout(tick,speed);
}
GC.ticker = API;
}(GC));
la handler_pool() c'est basiquement un objet qui stocke des fonctions et qui les appelle quand on le trigger().
ah et je vois que dans la fn tick j'oublie de reassigner tid au nouveau timeout pour pouvoir le clear (le clear, dans une fonction stop, n'est pas encore présent)