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

@@ -114,8 +114,7 @@ namespace OpenRA.Mods.Common.Traits
INotifyBurstComplete[] notifyBurstComplete;
INotifyAttack[] notifyAttacks;
ConditionManager conditionManager;
int conditionToken = ConditionManager.InvalidConditionToken;
int conditionToken = Actor.InvalidConditionToken;
IEnumerable<int> rangeModifiers;
IEnumerable<int> reloadModifiers;
@@ -169,7 +168,6 @@ namespace OpenRA.Mods.Common.Traits
coords = self.Trait<BodyOrientation>();
notifyBurstComplete = self.TraitsImplementing<INotifyBurstComplete>().ToArray();
notifyAttacks = self.TraitsImplementing<INotifyAttack>().ToArray();
conditionManager = self.TraitOrDefault<ConditionManager>();
rangeModifiers = self.TraitsImplementing<IRangeModifier>().ToArray().Select(m => m.GetRangeModifier());
reloadModifiers = self.TraitsImplementing<IReloadModifier>().ToArray().Select(m => m.GetReloadModifier());
@@ -181,15 +179,15 @@ namespace OpenRA.Mods.Common.Traits
void UpdateCondition(Actor self)
{
if (string.IsNullOrEmpty(Info.ReloadingCondition) || conditionManager == null)
if (string.IsNullOrEmpty(Info.ReloadingCondition))
return;
var enabled = !IsTraitDisabled && IsReloading;
if (enabled && conditionToken == ConditionManager.InvalidConditionToken)
conditionToken = conditionManager.GrantCondition(self, Info.ReloadingCondition);
else if (!enabled && conditionToken != ConditionManager.InvalidConditionToken)
conditionToken = conditionManager.RevokeCondition(self, conditionToken);
if (enabled && conditionToken == Actor.InvalidConditionToken)
conditionToken = self.GrantCondition(Info.ReloadingCondition);
else if (!enabled && conditionToken != Actor.InvalidConditionToken)
conditionToken = self.RevokeCondition(conditionToken);
}
protected virtual void Tick(Actor self)