Merge ConditionManager trait directly into Actor
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user