From acc0b618c8b1e414f1b8ae7233206961464d6541 Mon Sep 17 00:00:00 2001 From: atlimit8 Date: Sun, 5 Oct 2014 11:38:06 -0500 Subject: [PATCH] Restricted terrain targeting to force-move enter transports --- OpenRA.Mods.RA/Activities/Enter.cs | 6 ++++-- OpenRA.Mods.RA/Activities/EnterTransport.cs | 4 ++-- OpenRA.Mods.RA/Passenger.cs | 3 ++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/OpenRA.Mods.RA/Activities/Enter.cs b/OpenRA.Mods.RA/Activities/Enter.cs index c1ccd61cf5..86dde98b61 100755 --- a/OpenRA.Mods.RA/Activities/Enter.cs +++ b/OpenRA.Mods.RA/Activities/Enter.cs @@ -23,6 +23,7 @@ namespace OpenRA.Mods.RA.Activities readonly IMove move; readonly int maxTries = 0; + readonly bool targetCenter; public Target Target { get { return target; } } Target target; State nextState = State.ApproachingOrEntering; // Hint/starting point for next state @@ -31,11 +32,12 @@ namespace OpenRA.Mods.RA.Activities Activity inner; bool firstApproach = true; - protected Enter(Actor self, Actor target, int maxTries = 1) + protected Enter(Actor self, Actor target, int maxTries = 1, bool targetCenter = false) { this.move = self.Trait(); this.target = Target.FromActor(target); this.maxTries = maxTries; + this.targetCenter = targetCenter; } // CanEnter(target) should to be true; othwise, Enter may abort. @@ -160,7 +162,7 @@ namespace OpenRA.Mods.RA.Activities case ReserveStatus.None: return State.Done; // No available target -> abort to next activity case ReserveStatus.TooFar: - inner = move.MoveToTarget(self, Target.FromPos(target.CenterPosition)); // Approach + inner = move.MoveToTarget(self, targetCenter ? Target.FromPos(target.CenterPosition) : target); // Approach return State.ApproachingOrEntering; case ReserveStatus.Pending: return State.ApproachingOrEntering; // Retry next tick diff --git a/OpenRA.Mods.RA/Activities/EnterTransport.cs b/OpenRA.Mods.RA/Activities/EnterTransport.cs index df8230cbce..932ba3ee6e 100644 --- a/OpenRA.Mods.RA/Activities/EnterTransport.cs +++ b/OpenRA.Mods.RA/Activities/EnterTransport.cs @@ -21,8 +21,8 @@ namespace OpenRA.Mods.RA.Activities readonly int maxTries; Cargo cargo; - public EnterTransport(Actor self, Actor transport, int maxTries = 0) - : base(self, transport, maxTries) + public EnterTransport(Actor self, Actor transport, int maxTries = 0, bool targetCenter = false) + : base(self, transport, maxTries, targetCenter) { this.transport = transport; this.maxTries = maxTries; diff --git a/OpenRA.Mods.RA/Passenger.cs b/OpenRA.Mods.RA/Passenger.cs index 2e65cb3d96..3e4de0ff48 100644 --- a/OpenRA.Mods.RA/Passenger.cs +++ b/OpenRA.Mods.RA/Passenger.cs @@ -165,7 +165,8 @@ namespace OpenRA.Mods.RA self.SetTargetLine(target, Color.Green); self.CancelActivity(); - self.QueueActivity(new EnterTransport(self, order.TargetActor, order.OrderString == "EnterTransport" ? 0 : Info.MaxAlternateTransportAttempts)); + var transports = order.OrderString == "EnterTransports"; + self.QueueActivity(new EnterTransport(self, order.TargetActor, transports ? Info.MaxAlternateTransportAttempts : 0, transports)); } }