diff --git a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs index 76dd0657a7..2345b1f2e2 100644 --- a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs +++ b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs @@ -676,6 +676,22 @@ namespace OpenRA.Mods.Common.UtilityCommands } } + // Migrated Minelayer.MinefieldDepth to use WDist instead of float + if (engineVersion < 20160325) + { + if (node.Key.StartsWith("Minelayer")) + { + var depthNode = node.Value.Nodes.FirstOrDefault(x => x.Key == "MinefieldDepth"); + if (depthNode != null) + { + // The MinefieldDepth value is now a WDist, so multiply the float value with 1024. + var oldValue = FieldLoader.GetValue("MinefieldDepth", depthNode.Value.Value); + var newValue = (int)(oldValue * 1024); + depthNode.Value.Value = newValue.ToString(); + } + } + } + UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1); } } diff --git a/OpenRA.Mods.RA/Traits/Minelayer.cs b/OpenRA.Mods.RA/Traits/Minelayer.cs index 799266fe00..ab933a47a8 100644 --- a/OpenRA.Mods.RA/Traits/Minelayer.cs +++ b/OpenRA.Mods.RA/Traits/Minelayer.cs @@ -26,7 +26,7 @@ namespace OpenRA.Mods.RA.Traits public readonly string AmmoPoolName = "primary"; - public readonly float MinefieldDepth = 1.5f; + public readonly WDist MinefieldDepth = new WDist(1536); public object Create(ActorInitializer init) { return new Minelayer(init.Self); } } @@ -97,7 +97,7 @@ namespace OpenRA.Mods.RA.Traits } } - static IEnumerable GetMinefieldCells(CPos start, CPos end, float depth) + static IEnumerable GetMinefieldCells(CPos start, CPos end, WDist depth) { var mins = CPos.Min(start, end); var maxs = CPos.Max(start, end); @@ -113,7 +113,7 @@ namespace OpenRA.Mods.RA.Traits for (var i = mins.X; i <= maxs.X; i++) for (var j = mins.Y; j <= maxs.Y; j++) - if (Math.Abs(q.X * i + q.Y * j + c) < depth) + if (Math.Abs(q.X * i + q.Y * j + c) * 1024 < depth.Length) yield return new CPos(i, j); }