diff --git a/OpenRA.Mods.RA/Air/HeliReturn.cs b/OpenRA.Mods.RA/Air/HeliReturn.cs index 96969ccb6a..b1638bcace 100755 --- a/OpenRA.Mods.RA/Air/HeliReturn.cs +++ b/OpenRA.Mods.RA/Air/HeliReturn.cs @@ -51,8 +51,7 @@ namespace OpenRA.Mods.RA.Air heli.reservation = res.Reserve(dest, self, heli); var exit = dest.Info.Traits.WithInterface().FirstOrDefault(); - var offset = (exit == null) ? WVec.Zero : - new WVec(exit.SpawnOffsetVector.X, exit.SpawnOffsetVector.Y, 0) * 1024 / Game.CellSize; + var offset = (exit != null) ? exit.SpawnOffsetVector : WVec.Zero; return Util.SequenceActivities( new HeliFly(dest.CenterPosition + offset), diff --git a/OpenRA.Mods.RA/Air/Helicopter.cs b/OpenRA.Mods.RA/Air/Helicopter.cs index 7830abc8ac..a0a8529355 100755 --- a/OpenRA.Mods.RA/Air/Helicopter.cs +++ b/OpenRA.Mods.RA/Air/Helicopter.cs @@ -72,8 +72,7 @@ namespace OpenRA.Mods.RA.Air reservation = res.Reserve(order.TargetActor, self, this); var exit = order.TargetActor.Info.Traits.WithInterface().FirstOrDefault(); - var offset = (exit == null) ? WVec.Zero : - new WVec(exit.SpawnOffsetVector.X, exit.SpawnOffsetVector.Y, 0) * 1024 / Game.CellSize; + var offset = (exit != null) ? exit.SpawnOffsetVector : WVec.Zero; self.SetTargetLine(Target.FromActor(order.TargetActor), Color.Green); diff --git a/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs b/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs index deef2f2ffe..ed185f1ed0 100644 --- a/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs +++ b/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs @@ -217,8 +217,7 @@ namespace OpenRA.Mods.RA.Missions cargo.Load(chinook, world.CreateActor(false, ChinookCargo.Random(world.SharedRandom), allies, null, null)); var exit = lz.Info.Traits.WithInterface().FirstOrDefault(); - var offset = (exit == null) ? WVec.Zero : - new WVec(exit.SpawnOffsetVector.X, exit.SpawnOffsetVector.Y, 0) * 1024 / Game.CellSize; + var offset = (exit != null) ? exit.SpawnOffsetVector : WVec.Zero; chinook.QueueActivity(new HeliFly(lz.CenterPosition + offset)); // no reservation of hpad but it's not needed chinook.QueueActivity(new Turn(0)); diff --git a/OpenRA.Mods.RA/Production.cs b/OpenRA.Mods.RA/Production.cs index 60782adb4a..3a516b6bb8 100755 --- a/OpenRA.Mods.RA/Production.cs +++ b/OpenRA.Mods.RA/Production.cs @@ -31,13 +31,15 @@ namespace OpenRA.Mods.RA public class ExitInfo : TraitInfo { public readonly int2 SpawnOffset = int2.Zero; // in px relative to CenterLocation - public readonly int2 ExitCell = int2.Zero; // in cells relative to TopLeft + public readonly int2 ExitCell = int2.Zero; // in cells relative to TopLeft public readonly int Facing = -1; - public PVecInt SpawnOffsetVector { get { return (PVecInt)SpawnOffset; } } + // TODO: Push this conversion into the yaml + public WVec SpawnOffsetVector { get { return new WVec(SpawnOffset.X, SpawnOffset.Y, 0) * 1024 / Game.CellSize; } } public CVec ExitCellVector { get { return (CVec)ExitCell; } } } - public class Exit {} + + public class Exit { } public class Production { @@ -50,7 +52,7 @@ namespace OpenRA.Mods.RA public void DoProduction(Actor self, ActorInfo producee, ExitInfo exitinfo) { var exit = self.Location + exitinfo.ExitCellVector; - var spawn = (self.Trait().PxPosition + exitinfo.SpawnOffsetVector).ToWPos(0); + var spawn = self.CenterPosition + exitinfo.SpawnOffsetVector; var to = exit.CenterPosition; var fi = producee.Traits.Get();