1
0
forked from mirrors/0ad
Files
0ad/binaries/data/mods/public/maps/scripts/ConquestCommon.js
T
2017-12-09 20:25:23 +00:00

55 lines
1.5 KiB
JavaScript

Trigger.prototype.ConquestOwnershipChanged = function(msg)
{
if (!this.conquestDataInit || !this.conquestClassFilter)
return;
if (!TriggerHelper.EntityMatchesClassList(msg.entity, this.conquestClassFilter))
return;
if (msg.to > 0)
this.conquestEntitiesByPlayer[msg.to].push(msg.entity);
if (msg.from > 0)
{
let entities = this.conquestEntitiesByPlayer[msg.from];
let index = entities.indexOf(msg.entity);
if (index != -1)
entities.splice(index, 1);
if (!entities.length)
{
let cmpPlayer = QueryPlayerIDInterface(msg.from);
if (cmpPlayer)
cmpPlayer.SetState("defeated", this.conquestDefeatReason);
}
}
};
Trigger.prototype.ConquestStartGameCount = function()
{
if (!this.conquestClassFilter)
{
warn("ConquestStartGameCount: conquestClassFilter undefined");
return;
}
let cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
let numPlayers = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager).GetNumPlayers();
for (let i = 1; i < numPlayers; ++i)
this.conquestEntitiesByPlayer[i] =
cmpRangeManager.GetEntitiesByPlayer(i).filter(ent =>
TriggerHelper.EntityMatchesClassList(ent, this.conquestClassFilter));
this.conquestDataInit = true;
};
{
let cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
cmpTrigger.conquestEntitiesByPlayer = {};
cmpTrigger.conquestDataInit = false;
cmpTrigger.conquestClassFilter = "";
cmpTrigger.RegisterTrigger("OnOwnershipChanged", "ConquestOwnershipChanged", { "enabled": true });
cmpTrigger.DoAfterDelay(0, "ConquestStartGameCount", null);
}