From c68ef3d25fe7718a86a537ce62681d9d3c74f10f Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 17 Apr 2016 20:25:20 -0400 Subject: [PATCH] Preserve editor actor order. --- .../Traits/World/EditorActorLayer.cs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/World/EditorActorLayer.cs b/OpenRA.Mods.Common/Traits/World/EditorActorLayer.cs index 1b2bc5c7c9..563ae72598 100644 --- a/OpenRA.Mods.Common/Traits/World/EditorActorLayer.cs +++ b/OpenRA.Mods.Common/Traits/World/EditorActorLayer.cs @@ -32,7 +32,7 @@ namespace OpenRA.Mods.Common.Traits public class EditorActorLayer : IWorldLoaded, ITickRender, IRender, IRadarSignature, ICreatePlayers { readonly EditorActorLayerInfo info; - readonly Dictionary previews = new Dictionary(); + readonly List previews = new List(); readonly Dictionary> cellMap = new Dictionary>(); SpatiallyPartitioned screenMap; @@ -75,7 +75,7 @@ namespace OpenRA.Mods.Common.Traits Add(kv.Key, new ActorReference(kv.Value.Value, kv.Value.ToDictionary()), true); // Update neighbours in one pass - foreach (var p in previews.Values) + foreach (var p in previews) UpdateNeighbours(p.Footprint); } @@ -84,8 +84,8 @@ namespace OpenRA.Mods.Common.Traits if (wr.World.Type != WorldType.Editor) return; - foreach (var kv in previews.Values) - kv.Tick(); + foreach (var p in previews) + p.Tick(); } static readonly IEnumerable NoRenderables = Enumerable.Empty(); @@ -105,7 +105,7 @@ namespace OpenRA.Mods.Common.Traits var owner = Players.Players[reference.InitDict.Get().PlayerName]; var preview = new EditorActorPreview(worldRenderer, id, reference, owner); - previews.Add(id, preview); + previews.Add(preview); screenMap.Add(preview, preview.Bounds); foreach (var kv in preview.Footprint) @@ -133,7 +133,7 @@ namespace OpenRA.Mods.Common.Traits public void Remove(EditorActorPreview preview) { - previews.Remove(preview.ID); + previews.Remove(preview); screenMap.Remove(preview); foreach (var kv in preview.Footprint) @@ -156,7 +156,7 @@ namespace OpenRA.Mods.Common.Traits void SyncMultiplayerCount() { - var newCount = previews.Count(p => p.Value.Info.Name == "mpspawn"); + var newCount = previews.Count(p => p.Info.Name == "mpspawn"); var mp = Players.Players.Where(p => p.Key.StartsWith("Multi")).ToList(); foreach (var kv in mp) { @@ -246,7 +246,7 @@ namespace OpenRA.Mods.Common.Traits var id = previews.Count(); var possibleName = "Actor" + id.ToString(); - while (previews.ContainsKey(possibleName)) + while (previews.Any(p => p.ID == possibleName)) { id++; possibleName = "Actor" + id.ToString(); @@ -259,7 +259,7 @@ namespace OpenRA.Mods.Common.Traits { var nodes = new List(); foreach (var a in previews) - nodes.Add(new MiniYamlNode(a.Key, a.Value.Save())); + nodes.Add(new MiniYamlNode(a.ID, a.Save())); return nodes; }