Merge ConditionManager trait directly into Actor

This commit is contained in:
atlimit8
2020-04-18 23:25:05 -05:00
committed by reaperrr
parent e12c1dc9aa
commit 259c8d2c98
65 changed files with 466 additions and 707 deletions

View File

@@ -33,8 +33,7 @@ namespace OpenRA.Mods.Common.Traits
readonly GrantConditionOnPlayerResourcesInfo info;
PlayerResources playerResources;
ConditionManager conditionManager;
int conditionToken = ConditionManager.InvalidConditionToken;
int conditionToken = Actor.InvalidConditionToken;
public GrantConditionOnPlayerResources(GrantConditionOnPlayerResourcesInfo info)
{
@@ -49,7 +48,6 @@ namespace OpenRA.Mods.Common.Traits
// it refers to the same actor as self.Owner.PlayerActor
var playerActor = self.Info.Name == "player" ? self : self.Owner.PlayerActor;
playerResources = playerActor.Trait<PlayerResources>();
conditionManager = self.TraitOrDefault<ConditionManager>();
}
void INotifyOwnerChanged.OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
@@ -59,14 +57,14 @@ namespace OpenRA.Mods.Common.Traits
void ITick.Tick(Actor self)
{
if (string.IsNullOrEmpty(info.Condition) || conditionManager == null)
if (string.IsNullOrEmpty(info.Condition))
return;
var enabled = playerResources.Resources > info.Threshold;
if (enabled && conditionToken == ConditionManager.InvalidConditionToken)
conditionToken = conditionManager.GrantCondition(self, info.Condition);
else if (!enabled && conditionToken != ConditionManager.InvalidConditionToken)
conditionToken = conditionManager.RevokeCondition(self, conditionToken);
if (enabled && conditionToken == Actor.InvalidConditionToken)
conditionToken = self.GrantCondition(info.Condition);
else if (!enabled && conditionToken != Actor.InvalidConditionToken)
conditionToken = self.RevokeCondition(conditionToken);
}
}
}