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

@@ -41,8 +41,7 @@ namespace OpenRA.Mods.Common.Traits
readonly GrantConditionOnDamageStateInfo info;
readonly IHealth health;
ConditionManager conditionManager;
int conditionToken = ConditionManager.InvalidConditionToken;
int conditionToken = Actor.InvalidConditionToken;
public GrantConditionOnDamageState(Actor self, GrantConditionOnDamageStateInfo info)
{
@@ -52,16 +51,15 @@ namespace OpenRA.Mods.Common.Traits
void INotifyCreated.Created(Actor self)
{
conditionManager = self.Trait<ConditionManager>();
GrantConditionOnValidDamageState(self, health.DamageState);
}
void GrantConditionOnValidDamageState(Actor self, DamageState state)
{
if (!info.ValidDamageStates.HasFlag(state) || conditionToken != ConditionManager.InvalidConditionToken)
if (!info.ValidDamageStates.HasFlag(state) || conditionToken != Actor.InvalidConditionToken)
return;
conditionToken = conditionManager.GrantCondition(self, info.Condition);
conditionToken = self.GrantCondition(info.Condition);
var sound = info.EnabledSounds.RandomOrDefault(Game.CosmeticRandom);
Game.Sound.Play(SoundType.World, sound, self.CenterPosition);
@@ -69,7 +67,7 @@ namespace OpenRA.Mods.Common.Traits
void INotifyDamageStateChanged.DamageStateChanged(Actor self, AttackInfo e)
{
var granted = conditionToken != ConditionManager.InvalidConditionToken;
var granted = conditionToken != Actor.InvalidConditionToken;
if (granted && info.GrantPermanently)
return;
@@ -77,7 +75,7 @@ namespace OpenRA.Mods.Common.Traits
GrantConditionOnValidDamageState(self, health.DamageState);
else if (granted && !info.ValidDamageStates.HasFlag(e.DamageState) && info.ValidDamageStates.HasFlag(e.PreviousDamageState))
{
conditionToken = conditionManager.RevokeCondition(self, conditionToken);
conditionToken = self.RevokeCondition(conditionToken);
var sound = info.DisabledSounds.RandomOrDefault(Game.CosmeticRandom);
Game.Sound.Play(SoundType.World, sound, self.CenterPosition);