From 16d4ee003429d30d0857e3d3f816c525dd1740d3 Mon Sep 17 00:00:00 2001 From: reaperrr Date: Sun, 2 Oct 2016 20:27:03 +0200 Subject: [PATCH] Move `IsMovingVertically` to IMove - avoids an Aircraft trait look-up in #11886 - potentially useful for future additional locomotors (jumpjet), custom locomotors in external mods, possibly future updates to default ground locomotor (Mobile) with regard to behavior on slopes --- OpenRA.Game/Traits/TraitsInterfaces.cs | 1 + OpenRA.Mods.Common/Traits/Air/Aircraft.cs | 6 ++++-- OpenRA.Mods.Common/Traits/Mobile.cs | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index 112a570207..6e580d5234 100644 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -308,6 +308,7 @@ namespace OpenRA.Traits Activity VisualMove(Actor self, WPos fromPos, WPos toPos); CPos NearestMoveableCell(CPos target); bool IsMoving { get; set; } + bool IsMovingVertically { get; set; } bool CanEnterTargetNow(Actor self, Target target); } diff --git a/OpenRA.Mods.Common/Traits/Air/Aircraft.cs b/OpenRA.Mods.Common/Traits/Air/Aircraft.cs index 090cb55601..9913652d8f 100644 --- a/OpenRA.Mods.Common/Traits/Air/Aircraft.cs +++ b/OpenRA.Mods.Common/Traits/Air/Aircraft.cs @@ -115,13 +115,13 @@ namespace OpenRA.Mods.Common.Traits public int TurnSpeed { get { return Info.TurnSpeed; } } public Actor ReservedActor { get; private set; } public bool MayYieldReservation { get; private set; } - public bool IsMovingVertically { get; private set; } bool airborne; bool cruising; bool firstTick = true; bool isMoving; + bool isMovingVertically; WPos cachedPosition; public Aircraft(ActorInitializer init, AircraftInfo info) @@ -182,7 +182,7 @@ namespace OpenRA.Mods.Common.Traits var oldCachedPosition = cachedPosition; cachedPosition = self.CenterPosition; isMoving = (oldCachedPosition - cachedPosition).HorizontalLengthSquared != 0; - IsMovingVertically = (oldCachedPosition - cachedPosition).VerticalLengthSquared != 0; + isMovingVertically = (oldCachedPosition - cachedPosition).VerticalLengthSquared != 0; Repulse(); } @@ -495,6 +495,8 @@ namespace OpenRA.Mods.Common.Traits public bool IsMoving { get { return isMoving; } set { } } + public bool IsMovingVertically { get { return isMovingVertically; } set { } } + public bool CanEnterTargetNow(Actor self, Target target) { if (target.Positions.Any(p => self.World.ActorMap.GetActorsAt(self.World.Map.CellContaining(p)).Any(a => a != self && a != target.Actor))) diff --git a/OpenRA.Mods.Common/Traits/Mobile.cs b/OpenRA.Mods.Common/Traits/Mobile.cs index 1398767c77..cdd07f2a70 100644 --- a/OpenRA.Mods.Common/Traits/Mobile.cs +++ b/OpenRA.Mods.Common/Traits/Mobile.cs @@ -327,6 +327,7 @@ namespace OpenRA.Mods.Common.Traits readonly Actor self; readonly Lazy> speedModifiers; public bool IsMoving { get; set; } + public bool IsMovingVertically { get { return false; } set { } } int facing; CPos fromCell, toCell;