mirror of
https://gitea.wildfiregames.com/0ad/0ad
synced 2026-06-19 23:03:56 -07:00
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.
56 lines
1.1 KiB
JavaScript
56 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);
|
|
|