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

@@ -29,8 +29,7 @@ namespace OpenRA.Mods.Common.Traits
public class GrantConditionOnMovement : ConditionalTrait<GrantConditionOnMovementInfo>, INotifyMoving
{
readonly IMove movement;
ConditionManager conditionManager;
int conditionToken = ConditionManager.InvalidConditionToken;
int conditionToken = Actor.InvalidConditionToken;
public GrantConditionOnMovement(Actor self, GrantConditionOnMovementInfo info)
: base(info)
@@ -38,23 +37,14 @@ namespace OpenRA.Mods.Common.Traits
movement = self.Trait<IMove>();
}
protected override void Created(Actor self)
{
conditionManager = self.TraitOrDefault<ConditionManager>();
base.Created(self);
}
void UpdateCondition(Actor self, MovementType types)
{
if (conditionManager == null)
return;
var validMovement = !IsTraitDisabled && (types & Info.ValidMovementTypes) != 0;
if (!validMovement && conditionToken != ConditionManager.InvalidConditionToken)
conditionToken = conditionManager.RevokeCondition(self, conditionToken);
else if (validMovement && conditionToken == ConditionManager.InvalidConditionToken)
conditionToken = conditionManager.GrantCondition(self, Info.Condition);
if (!validMovement && conditionToken != Actor.InvalidConditionToken)
conditionToken = self.RevokeCondition(conditionToken);
else if (validMovement && conditionToken == Actor.InvalidConditionToken)
conditionToken = self.GrantCondition(Info.Condition);
}
void INotifyMoving.MovementTypeChanged(Actor self, MovementType types)