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

@@ -34,9 +34,8 @@ namespace OpenRA.Mods.Common.Traits
readonly GrantConditionOnPrerequisiteInfo info;
bool wasAvailable;
ConditionManager conditionManager;
GrantConditionOnPrerequisiteManager globalManager;
int conditionToken = ConditionManager.InvalidConditionToken;
int conditionToken = Actor.InvalidConditionToken;
public GrantConditionOnPrerequisite(Actor self, GrantConditionOnPrerequisiteInfo info)
{
@@ -52,7 +51,6 @@ namespace OpenRA.Mods.Common.Traits
var playerActor = self.Info.Name == "player" ? self : self.Owner.PlayerActor;
globalManager = playerActor.Trait<GrantConditionOnPrerequisiteManager>();
conditionManager = self.TraitOrDefault<ConditionManager>();
}
void INotifyAddedToWorld.AddedToWorld(Actor self)
@@ -74,13 +72,13 @@ namespace OpenRA.Mods.Common.Traits
public void PrerequisitesUpdated(Actor self, bool available)
{
if (available == wasAvailable || conditionManager == null)
if (available == wasAvailable)
return;
if (available && conditionToken == ConditionManager.InvalidConditionToken)
conditionToken = conditionManager.GrantCondition(self, info.Condition);
else if (!available && conditionToken != ConditionManager.InvalidConditionToken)
conditionToken = conditionManager.RevokeCondition(self, conditionToken);
if (available && conditionToken == Actor.InvalidConditionToken)
conditionToken = self.GrantCondition(info.Condition);
else if (!available && conditionToken != Actor.InvalidConditionToken)
conditionToken = self.RevokeCondition(conditionToken);
wasAvailable = available;
}