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

@@ -73,13 +73,12 @@ namespace OpenRA.Mods.Common.Traits
int remainingTime;
bool isDocking;
ConditionManager conditionManager;
Cloak[] otherCloaks;
CPos? lastPos;
bool wasCloaked = false;
bool firstTick = true;
int cloakedToken = ConditionManager.InvalidConditionToken;
int cloakedToken = Actor.InvalidConditionToken;
public Cloak(CloakInfo info)
: base(info)
@@ -89,7 +88,6 @@ namespace OpenRA.Mods.Common.Traits
protected override void Created(Actor self)
{
conditionManager = self.TraitOrDefault<ConditionManager>();
otherCloaks = self.TraitsImplementing<Cloak>()
.Where(c => c != this)
.ToArray();
@@ -97,8 +95,8 @@ namespace OpenRA.Mods.Common.Traits
if (Cloaked)
{
wasCloaked = true;
if (conditionManager != null && cloakedToken == ConditionManager.InvalidConditionToken && !string.IsNullOrEmpty(Info.CloakedCondition))
cloakedToken = conditionManager.GrantCondition(self, Info.CloakedCondition);
if (cloakedToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(Info.CloakedCondition))
cloakedToken = self.GrantCondition(Info.CloakedCondition);
}
base.Created(self);
@@ -165,8 +163,8 @@ namespace OpenRA.Mods.Common.Traits
var isCloaked = Cloaked;
if (isCloaked && !wasCloaked)
{
if (conditionManager != null && cloakedToken == ConditionManager.InvalidConditionToken && !string.IsNullOrEmpty(Info.CloakedCondition))
cloakedToken = conditionManager.GrantCondition(self, Info.CloakedCondition);
if (cloakedToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(Info.CloakedCondition))
cloakedToken = self.GrantCondition(Info.CloakedCondition);
// Sounds shouldn't play if the actor starts cloaked
if (!(firstTick && Info.InitialDelay == 0) && !otherCloaks.Any(a => a.Cloaked))
@@ -174,8 +172,8 @@ namespace OpenRA.Mods.Common.Traits
}
else if (!isCloaked && wasCloaked)
{
if (cloakedToken != ConditionManager.InvalidConditionToken)
cloakedToken = conditionManager.RevokeCondition(self, cloakedToken);
if (cloakedToken != Actor.InvalidConditionToken)
cloakedToken = self.RevokeCondition(cloakedToken);
if (!(firstTick && Info.InitialDelay == 0) && !otherCloaks.Any(a => a.Cloaked))
Game.Sound.Play(SoundType.World, Info.UncloakSound, self.CenterPosition);