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

@@ -53,8 +53,7 @@ namespace OpenRA.Mods.Common.Traits
readonly IHealth health;
readonly int maxHP;
ConditionManager conditionManager;
int conditionToken = ConditionManager.InvalidConditionToken;
int conditionToken = Actor.InvalidConditionToken;
public GrantConditionOnHealth(Actor self, GrantConditionOnHealthInfo info)
{
@@ -65,16 +64,15 @@ namespace OpenRA.Mods.Common.Traits
void INotifyCreated.Created(Actor self)
{
conditionManager = self.Trait<ConditionManager>();
GrantConditionOnValidHealth(self, health.HP);
}
void GrantConditionOnValidHealth(Actor self, int hp)
{
if (info.MinHP > hp || maxHP < hp || conditionToken != ConditionManager.InvalidConditionToken)
if (info.MinHP > hp || maxHP < hp || 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);
@@ -82,7 +80,7 @@ namespace OpenRA.Mods.Common.Traits
void INotifyDamage.Damaged(Actor self, AttackInfo e)
{
var granted = conditionToken != ConditionManager.InvalidConditionToken;
var granted = conditionToken != Actor.InvalidConditionToken;
if (granted && info.GrantPermanently)
return;
@@ -90,7 +88,7 @@ namespace OpenRA.Mods.Common.Traits
GrantConditionOnValidHealth(self, health.HP);
else if (granted && (info.MinHP > health.HP || maxHP < health.HP))
{
conditionToken = conditionManager.RevokeCondition(self, conditionToken);
conditionToken = self.RevokeCondition(conditionToken);
var sound = info.DisabledSounds.RandomOrDefault(Game.CosmeticRandom);
Game.Sound.Play(SoundType.World, sound, self.CenterPosition);