Prevent out of scope usage of cmpTrigger, which would result in an OOS on rejoin, refs #4310.

This was SVN commit r18912.
This commit is contained in:
elexis 2016-11-05 21:46:32 +00:00
parent 554032e507
commit d124b32f6a
3 changed files with 42 additions and 36 deletions

View file

@ -195,9 +195,11 @@ Trigger.prototype.DefeatPlayerOnceCCIsDestroyed = function(data)
TriggerHelper.DefeatPlayer(data.from);
};
var cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
cmpTrigger.playerCivicCenter = {};
cmpTrigger.DoAfterDelay(0, "InitGame", {});
cmpTrigger.DoAfterDelay(1000, "InitializeEnemyWaves", {});
cmpTrigger.RegisterTrigger("OnOwnershipChanged", "DefeatPlayerOnceCCIsDestroyed", { "enabled": true });
{
let cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
cmpTrigger.playerCivicCenter = {};
cmpTrigger.DoAfterDelay(0, "InitGame", {});
cmpTrigger.DoAfterDelay(1000, "InitializeEnemyWaves", {});
cmpTrigger.RegisterTrigger("OnOwnershipChanged", "DefeatPlayerOnceCCIsDestroyed", { "enabled": true });
}

View file

@ -105,30 +105,34 @@ Trigger.prototype.RangeAction = function(data)
warn(uneval(data));
};
// Activate all possible triggers
var cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
{
let cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
var data = {"enabled": true};
cmpTrigger.RegisterTrigger("OnStructureBuilt", "StructureBuiltAction", data);
cmpTrigger.RegisterTrigger("OnConstructionStarted", "ConstructionStartedAction", data);
cmpTrigger.RegisterTrigger("OnTrainingFinished", "TrainingFinishedAction", data);
cmpTrigger.RegisterTrigger("OnTrainingQueued", "TrainingQueuedAction", data);
cmpTrigger.RegisterTrigger("OnResearchFinished", "ResearchFinishedAction", data);
cmpTrigger.RegisterTrigger("OnResearchQueued", "ResearchQueuedAction", data);
cmpTrigger.RegisterTrigger("OnOwnershipChanged", "OwnershipChangedAction", data);
cmpTrigger.RegisterTrigger("OnPlayerCommand", "PlayerCommandAction", data);
// Activate all possible triggers
let data = { "enabled": true };
cmpTrigger.RegisterTrigger("OnStructureBuilt", "StructureBuiltAction", data);
cmpTrigger.RegisterTrigger("OnConstructionStarted", "ConstructionStartedAction", data);
cmpTrigger.RegisterTrigger("OnTrainingFinished", "TrainingFinishedAction", data);
cmpTrigger.RegisterTrigger("OnTrainingQueued", "TrainingQueuedAction", data);
cmpTrigger.RegisterTrigger("OnResearchFinished", "ResearchFinishedAction", data);
cmpTrigger.RegisterTrigger("OnResearchQueued", "ResearchQueuedAction", data);
cmpTrigger.RegisterTrigger("OnOwnershipChanged", "OwnershipChangedAction", data);
cmpTrigger.RegisterTrigger("OnPlayerCommand", "PlayerCommandAction", data);
data.delay = 10000; // after 10 seconds
data.interval = 5000; // every 5 seconds
cmpTrigger.numberOfTimerTrigger = 0;
cmpTrigger.maxNumberOfTimerTrigger = 3; // execute it 3 times maximum
cmpTrigger.RegisterTrigger("OnInterval", "IntervalAction", data);
var entities = cmpTrigger.GetTriggerPoints("A");
data = {
"entities": entities, // central points to calculate the range circles
"players": [1], // only count entities of player 1
"maxRange": 40,
"requiredComponent": IID_UnitAI, // only count units in range
"enabled": true,
};
cmpTrigger.RegisterTrigger("OnRange", "RangeAction", data);
cmpTrigger.numberOfTimerTrigger = 0;
cmpTrigger.maxNumberOfTimerTrigger = 3; // execute it 3 times maximum
cmpTrigger.RegisterTrigger("OnInterval", "IntervalAction", {
"enabled": true,
"delay": 10 * 1000,
"interval": 5 * 1000,
});
cmpTrigger.RegisterTrigger("OnRange", "RangeAction", {
"entities": cmpTrigger.GetTriggerPoints("A"), // central points to calculate the range circles
"players": [1], // only count entities of player 1
"maxRange": 40,
"requiredComponent": IID_UnitAI, // only count units in range
"enabled": true,
});
}

View file

@ -37,9 +37,9 @@ Trigger.prototype.SpawnAndAttack = function()
this.DoAfterDelay(this.attackTime, "SpawnAndAttack", {});
};
var cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
cmpTrigger.attackSize = 1; // attack with 1 soldier
cmpTrigger.attackTime = 60*1000; // attack in 1 minute
cmpTrigger.DoAfterDelay(cmpTrigger.attackTime, "SpawnAndAttack", {});
{
let cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
cmpTrigger.attackSize = 1; // attack with 1 soldier
cmpTrigger.attackTime = 60 * 1000; // attack in 1 minute
cmpTrigger.DoAfterDelay(cmpTrigger.attackTime, "SpawnAndAttack", {});
}