From 63068d5a7cc6aeddd420370a371a5be366be068a Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Fri, 14 Mar 2014 20:42:44 +1300 Subject: [PATCH] Fix Map.GetSpawnPoints to return CPos. --- OpenRA.Game/Map.cs | 6 +++--- OpenRA.Game/Widgets/MapPreviewWidget.cs | 4 ++-- OpenRA.Mods.RA/MPStartLocations.cs | 7 ++++--- OpenRA.Mods.RA/Widgets/Logic/LobbyUtils.cs | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/OpenRA.Game/Map.cs b/OpenRA.Game/Map.cs index f2ec745328..1a9fbee044 100644 --- a/OpenRA.Game/Map.cs +++ b/OpenRA.Game/Map.cs @@ -228,12 +228,12 @@ namespace OpenRA Uid = ComputeHash(); } - public int2[] GetSpawnPoints() + public CPos[] GetSpawnPoints() { return Actors.Value.Values .Where(a => a.Type == "mpspawn") - .Select(a => a.InitDict.Get().value) - .ToArray(); + .Select(a => (CPos)a.InitDict.Get().value) + .ToArray(); } public void Save(string toPath) diff --git a/OpenRA.Game/Widgets/MapPreviewWidget.cs b/OpenRA.Game/Widgets/MapPreviewWidget.cs index 538ac9453a..cecd76880e 100644 --- a/OpenRA.Game/Widgets/MapPreviewWidget.cs +++ b/OpenRA.Game/Widgets/MapPreviewWidget.cs @@ -22,7 +22,7 @@ namespace OpenRA.Widgets public class MapPreviewWidget : Widget { public Func Map = () => null; - public Func> SpawnClients = () => new Dictionary(); + public Func> SpawnClients = () => new Dictionary(); public Action OnMouseDown = _ => {}; public bool IgnoreMouseInput = false; public bool ShowSpawnPoints = true; @@ -75,7 +75,7 @@ namespace OpenRA.Widgets tooltipContainer.Value.RemoveTooltip(); } - public int2 ConvertToPreview(int2 point) + public int2 ConvertToPreview(CPos point) { var map = Map(); return new int2(MapRect.X + (int)(PreviewScale*(point.X - map.Bounds.Left)) , MapRect.Y + (int)(PreviewScale*(point.Y - map.Bounds.Top))); diff --git a/OpenRA.Mods.RA/MPStartLocations.cs b/OpenRA.Mods.RA/MPStartLocations.cs index e2f8c15a4f..2be4f1b75e 100755 --- a/OpenRA.Mods.RA/MPStartLocations.cs +++ b/OpenRA.Mods.RA/MPStartLocations.cs @@ -28,9 +28,10 @@ namespace OpenRA.Mods.RA public void WorldLoaded(World world, WorldRenderer wr) { + var spawns = world.Map.GetSpawnPoints(); var taken = world.LobbyInfo.Clients.Where(c => c.SpawnPoint != 0 && c.Slot != null) - .Select(c => (CPos) world.Map.GetSpawnPoints()[c.SpawnPoint-1]).ToList(); - var available = world.Map.GetSpawnPoints().Select(c => (CPos)c).Except(taken).ToList(); + .Select(c => spawns[c.SpawnPoint-1]).ToList(); + var available = spawns.Except(taken).ToList(); // Set spawn foreach (var kv in world.LobbyInfo.Slots) @@ -41,7 +42,7 @@ namespace OpenRA.Mods.RA var client = world.LobbyInfo.ClientInSlot(kv.Key); var spid = (client == null || client.SpawnPoint == 0) ? ChooseSpawnPoint(world, available, taken) - : (CPos)world.Map.GetSpawnPoints()[client.SpawnPoint-1]; + : world.Map.GetSpawnPoints()[client.SpawnPoint-1]; Start.Add(player, spid); } diff --git a/OpenRA.Mods.RA/Widgets/Logic/LobbyUtils.cs b/OpenRA.Mods.RA/Widgets/Logic/LobbyUtils.cs index 76f3e5fa13..8ed0c7b3b5 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/LobbyUtils.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/LobbyUtils.cs @@ -130,7 +130,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic color.AttachPanel(colorChooser, onExit); } - public static Dictionary GetSpawnClients(OrderManager orderManager, Map map) + public static Dictionary GetSpawnClients(OrderManager orderManager, Map map) { var spawns = map.GetSpawnPoints(); return orderManager.LobbyInfo.Clients