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

@@ -33,8 +33,7 @@ namespace OpenRA.Mods.Common.Traits
{
readonly GrantConditionOnBotOwnerInfo info;
ConditionManager conditionManager;
int conditionToken = ConditionManager.InvalidConditionToken;
int conditionToken = Actor.InvalidConditionToken;
public GrantConditionOnBotOwner(ActorInitializer init, GrantConditionOnBotOwnerInfo info)
{
@@ -49,22 +48,18 @@ namespace OpenRA.Mods.Common.Traits
// it's defined on the PlayerActor.
self.World.AddFrameEndTask(w =>
{
conditionManager = self.TraitOrDefault<ConditionManager>();
if (conditionManager != null && self.Owner.IsBot && info.Bots.Contains(self.Owner.BotType))
conditionToken = conditionManager.GrantCondition(self, info.Condition);
if (self.Owner.IsBot && info.Bots.Contains(self.Owner.BotType))
conditionToken = self.GrantCondition(info.Condition);
});
}
void INotifyOwnerChanged.OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
{
if (conditionManager == null)
return;
if (conditionToken != ConditionManager.InvalidConditionToken)
conditionToken = conditionManager.RevokeCondition(self, conditionToken);
if (conditionToken != Actor.InvalidConditionToken)
conditionToken = self.RevokeCondition(conditionToken);
if (info.Bots.Contains(newOwner.BotType))
conditionToken = conditionManager.GrantCondition(self, info.Condition);
conditionToken = self.GrantCondition(info.Condition);
}
}
}