Merge ConditionManager trait directly into Actor
This commit is contained in:
@@ -100,8 +100,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
int totalWeight = 0;
|
||||
int reservedWeight = 0;
|
||||
Aircraft aircraft;
|
||||
ConditionManager conditionManager;
|
||||
int loadingToken = ConditionManager.InvalidConditionToken;
|
||||
int loadingToken = Actor.InvalidConditionToken;
|
||||
Stack<int> loadedTokens = new Stack<int>();
|
||||
bool takeOffAfterLoad;
|
||||
bool initialised;
|
||||
@@ -166,19 +165,18 @@ namespace OpenRA.Mods.Common.Traits
|
||||
void INotifyCreated.Created(Actor self)
|
||||
{
|
||||
aircraft = self.TraitOrDefault<Aircraft>();
|
||||
conditionManager = self.TraitOrDefault<ConditionManager>();
|
||||
|
||||
if (conditionManager != null && cargo.Any())
|
||||
if (cargo.Any())
|
||||
{
|
||||
foreach (var c in cargo)
|
||||
{
|
||||
string passengerCondition;
|
||||
if (Info.PassengerConditions.TryGetValue(c.Info.Name, out passengerCondition))
|
||||
passengerTokens.GetOrAdd(c.Info.Name).Push(conditionManager.GrantCondition(self, passengerCondition));
|
||||
passengerTokens.GetOrAdd(c.Info.Name).Push(self.GrantCondition(passengerCondition));
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(Info.LoadedCondition))
|
||||
loadedTokens.Push(conditionManager.GrantCondition(self, Info.LoadedCondition));
|
||||
loadedTokens.Push(self.GrantCondition(Info.LoadedCondition));
|
||||
}
|
||||
|
||||
// Defer notifications until we are certain all traits on the transport are initialised
|
||||
@@ -264,8 +262,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (!HasSpace(w))
|
||||
return false;
|
||||
|
||||
if (conditionManager != null && loadingToken == ConditionManager.InvalidConditionToken && !string.IsNullOrEmpty(Info.LoadingCondition))
|
||||
loadingToken = conditionManager.GrantCondition(self, Info.LoadingCondition);
|
||||
if (loadingToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(Info.LoadingCondition))
|
||||
loadingToken = self.GrantCondition(Info.LoadingCondition);
|
||||
|
||||
reserves.Add(a);
|
||||
reservedWeight += w;
|
||||
@@ -283,8 +281,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
reserves.Remove(a);
|
||||
ReleaseLock(self);
|
||||
|
||||
if (loadingToken != ConditionManager.InvalidConditionToken)
|
||||
loadingToken = conditionManager.RevokeCondition(self, loadingToken);
|
||||
if (loadingToken != Actor.InvalidConditionToken)
|
||||
loadingToken = self.RevokeCondition(loadingToken);
|
||||
}
|
||||
|
||||
// Prepare for transport pickup
|
||||
@@ -355,10 +353,10 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
Stack<int> passengerToken;
|
||||
if (passengerTokens.TryGetValue(passenger.Info.Name, out passengerToken) && passengerToken.Any())
|
||||
conditionManager.RevokeCondition(self, passengerToken.Pop());
|
||||
self.RevokeCondition(passengerToken.Pop());
|
||||
|
||||
if (loadedTokens.Any())
|
||||
conditionManager.RevokeCondition(self, loadedTokens.Pop());
|
||||
self.RevokeCondition(loadedTokens.Pop());
|
||||
|
||||
return passenger;
|
||||
}
|
||||
@@ -387,8 +385,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
reserves.Remove(a);
|
||||
ReleaseLock(self);
|
||||
|
||||
if (loadingToken != ConditionManager.InvalidConditionToken)
|
||||
loadingToken = conditionManager.RevokeCondition(self, loadingToken);
|
||||
if (loadingToken != Actor.InvalidConditionToken)
|
||||
loadingToken = self.RevokeCondition(loadingToken);
|
||||
}
|
||||
|
||||
// Don't initialise (effectively twice) if this runs before the FrameEndTask from Created
|
||||
@@ -404,11 +402,11 @@ namespace OpenRA.Mods.Common.Traits
|
||||
}
|
||||
|
||||
string passengerCondition;
|
||||
if (conditionManager != null && Info.PassengerConditions.TryGetValue(a.Info.Name, out passengerCondition))
|
||||
passengerTokens.GetOrAdd(a.Info.Name).Push(conditionManager.GrantCondition(self, passengerCondition));
|
||||
if (Info.PassengerConditions.TryGetValue(a.Info.Name, out passengerCondition))
|
||||
passengerTokens.GetOrAdd(a.Info.Name).Push(self.GrantCondition(passengerCondition));
|
||||
|
||||
if (conditionManager != null && !string.IsNullOrEmpty(Info.LoadedCondition))
|
||||
loadedTokens.Push(conditionManager.GrantCondition(self, Info.LoadedCondition));
|
||||
if (!string.IsNullOrEmpty(Info.LoadedCondition))
|
||||
loadedTokens.Push(self.GrantCondition(Info.LoadedCondition));
|
||||
}
|
||||
|
||||
void INotifyKilled.Killed(Actor self, AttackInfo e)
|
||||
|
||||
Reference in New Issue
Block a user