Ykkrosh
60a9e63c71
Tried to make the motion/AI/animation state transitions saner Added smoothed rotation of moving units Slightly more informative error reporting This was SVN commit r7319.
57 lines
1.1 KiB
JavaScript
57 lines
1.1 KiB
JavaScript
function Timer() {}
|
|
|
|
Timer.prototype.Init = function()
|
|
{
|
|
this.id = 0;
|
|
this.time = 0;
|
|
this.timers = {};
|
|
};
|
|
|
|
Timer.prototype.GetTime = function()
|
|
{
|
|
return this.time;
|
|
}
|
|
|
|
Timer.prototype.OnUpdate = function(msg)
|
|
{
|
|
var dt = Math.round(msg.turnLength * 1000);
|
|
this.time += dt;
|
|
|
|
// Collect the timers that need to run
|
|
// (We do this in two stages to avoid deleting from the timer list while
|
|
// we're in the middle of iterating through it)
|
|
var run = [];
|
|
for (var id in this.timers)
|
|
{
|
|
if (this.timers[id][3] <= this.time)
|
|
run.push(id);
|
|
}
|
|
for each (var id in run)
|
|
{
|
|
var t = this.timers[id];
|
|
var cmp = Engine.QueryInterface(t[0], t[1]);
|
|
try {
|
|
cmp[t[2]](t[4]);
|
|
} catch (e) {
|
|
print("Error in timer on entity "+t[0]+", IID "+t[1]+", function "+t[2]+": "+e+"\n");
|
|
// TODO: should report in an error log
|
|
}
|
|
delete this.timers[id];
|
|
}
|
|
}
|
|
|
|
Timer.prototype.SetTimeout = function(ent, iid, funcname, time, data)
|
|
{
|
|
var id = ++this.id;
|
|
this.timers[id] = [ent, iid, funcname, this.time + time, data];
|
|
return id;
|
|
};
|
|
|
|
Timer.prototype.CancelTimer = function(id)
|
|
{
|
|
delete this.timers[id];
|
|
};
|
|
|
|
Engine.RegisterComponentType(IID_Timer, "Timer", Timer);
|
|
|