Add AttackMove workaround for Aircraft.
This commit is contained in:
@@ -174,6 +174,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
RepairableInfo repairableInfo;
|
RepairableInfo repairableInfo;
|
||||||
RearmableInfo rearmableInfo;
|
RearmableInfo rearmableInfo;
|
||||||
|
AttackMove attackMove;
|
||||||
ConditionManager conditionManager;
|
ConditionManager conditionManager;
|
||||||
IDisposable reservation;
|
IDisposable reservation;
|
||||||
IEnumerable<int> speedModifiers;
|
IEnumerable<int> speedModifiers;
|
||||||
@@ -231,6 +232,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
repairableInfo = self.Info.TraitInfoOrDefault<RepairableInfo>();
|
repairableInfo = self.Info.TraitInfoOrDefault<RepairableInfo>();
|
||||||
rearmableInfo = self.Info.TraitInfoOrDefault<RearmableInfo>();
|
rearmableInfo = self.Info.TraitInfoOrDefault<RearmableInfo>();
|
||||||
|
attackMove = self.TraitOrDefault<AttackMove>();
|
||||||
conditionManager = self.TraitOrDefault<ConditionManager>();
|
conditionManager = self.TraitOrDefault<ConditionManager>();
|
||||||
speedModifiers = self.TraitsImplementing<ISpeedModifier>().ToArray().Select(sm => sm.GetSpeedModifier());
|
speedModifiers = self.TraitsImplementing<ISpeedModifier>().ToArray().Select(sm => sm.GetSpeedModifier());
|
||||||
cachedPosition = self.CenterPosition;
|
cachedPosition = self.CenterPosition;
|
||||||
@@ -522,7 +524,12 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
void INotifyBecomingIdle.OnBecomingIdle(Actor self)
|
void INotifyBecomingIdle.OnBecomingIdle(Actor self)
|
||||||
{
|
{
|
||||||
OnBecomingIdle(self);
|
// HACK: Work around AttackMove relying on INotifyIdle.TickIdle to continue its path
|
||||||
|
// AttackMoveActivity needs to be rewritten to use child activities instead!
|
||||||
|
if (attackMove != null && attackMove.TargetLocation.HasValue)
|
||||||
|
((INotifyIdle)attackMove).TickIdle(self);
|
||||||
|
else
|
||||||
|
OnBecomingIdle(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void OnBecomingIdle(Actor self)
|
protected virtual void OnBecomingIdle(Actor self)
|
||||||
|
|||||||
Reference in New Issue
Block a user