forked from mirrors/0ad
84e88edd36
Differential Revision: https://code.wildfiregames.com/D1134 Reviewed By: bb This was SVN commit r20619.
55 lines
1.5 KiB
JavaScript
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);
|
|
}
|