Cache FrozenActorLayer on the Player object.

This avoids unnecessary trait queries.
This commit is contained in:
Paul Chote
2018-11-28 08:52:55 +00:00
committed by Oliver Brakmann
parent f238e2c5cc
commit 3e490e5843
6 changed files with 11 additions and 12 deletions

View File

@@ -41,7 +41,6 @@ namespace OpenRA.Mods.Common.Traits
{
readonly World world;
readonly Player player;
FrozenActorLayer frozenLayer;
SupportPowerManager supportPowerManager;
Dictionary<SupportPowerInstance, int> waitingPowers = new Dictionary<SupportPowerInstance, int>();
Dictionary<string, SupportPowerDecision> powerDecisions = new Dictionary<string, SupportPowerDecision>();
@@ -55,7 +54,6 @@ namespace OpenRA.Mods.Common.Traits
protected override void TraitEnabled(Actor self)
{
frozenLayer = player.PlayerActor.TraitOrDefault<FrozenActorLayer>();
supportPowerManager = player.PlayerActor.Trait<SupportPowerManager>();
foreach (var decision in Info.Decisions)
powerDecisions.Add(decision.OrderName, decision);
@@ -140,7 +138,7 @@ namespace OpenRA.Mods.Common.Traits
var wbr = world.Map.CenterOfCell(br.ToCPos(map));
var targets = world.ActorMap.ActorsInBox(wtl, wbr);
var frozenTargets = frozenLayer != null ? frozenLayer.FrozenActorsInRegion(region) : Enumerable.Empty<FrozenActor>();
var frozenTargets = player.FrozenActorLayer != null ? player.FrozenActorLayer.FrozenActorsInRegion(region) : Enumerable.Empty<FrozenActor>();
var consideredAttractiveness = powerDecision.GetAttractiveness(targets, player) + powerDecision.GetAttractiveness(frozenTargets, player);
if (consideredAttractiveness <= bestAttractiveness || consideredAttractiveness < powerDecision.MinimumAttractiveness)
continue;
@@ -176,7 +174,7 @@ namespace OpenRA.Mods.Common.Traits
var y = checkPos.Y + j;
var pos = world.Map.CenterOfCell(new CPos(x, y));
var consideredAttractiveness = 0;
consideredAttractiveness += powerDecision.GetAttractiveness(pos, player, frozenLayer);
consideredAttractiveness += powerDecision.GetAttractiveness(pos, player);
if (consideredAttractiveness <= bestAttractiveness || consideredAttractiveness < powerDecision.MinimumAttractiveness)
continue;