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

@@ -23,33 +23,27 @@ namespace OpenRA.Mods.Common.Traits
object ITraitInfo.Create(ActorInitializer init) { return new GrantConditionWhileAiming(this); }
}
public class GrantConditionWhileAiming : INotifyCreated, INotifyAiming
public class GrantConditionWhileAiming : INotifyAiming
{
readonly GrantConditionWhileAimingInfo info;
ConditionManager conditionManager;
int conditionToken = ConditionManager.InvalidConditionToken;
int conditionToken = Actor.InvalidConditionToken;
public GrantConditionWhileAiming(GrantConditionWhileAimingInfo info)
{
this.info = info;
}
void INotifyCreated.Created(Actor self)
{
conditionManager = self.TraitOrDefault<ConditionManager>();
}
void INotifyAiming.StartedAiming(Actor self, AttackBase attack)
{
if (conditionToken == ConditionManager.InvalidConditionToken)
conditionToken = conditionManager.GrantCondition(self, info.Condition);
if (conditionToken == Actor.InvalidConditionToken)
conditionToken = self.GrantCondition(info.Condition);
}
void INotifyAiming.StoppedAiming(Actor self, AttackBase attack)
{
if (conditionToken != ConditionManager.InvalidConditionToken)
conditionToken = conditionManager.RevokeCondition(self, conditionToken);
if (conditionToken != Actor.InvalidConditionToken)
conditionToken = self.RevokeCondition(conditionToken);
}
}
}