Preserve editor actor order.
This commit is contained in:
@@ -32,7 +32,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public class EditorActorLayer : IWorldLoaded, ITickRender, IRender, IRadarSignature, ICreatePlayers
|
public class EditorActorLayer : IWorldLoaded, ITickRender, IRender, IRadarSignature, ICreatePlayers
|
||||||
{
|
{
|
||||||
readonly EditorActorLayerInfo info;
|
readonly EditorActorLayerInfo info;
|
||||||
readonly Dictionary<string, EditorActorPreview> previews = new Dictionary<string, EditorActorPreview>();
|
readonly List<EditorActorPreview> previews = new List<EditorActorPreview>();
|
||||||
readonly Dictionary<CPos, List<EditorActorPreview>> cellMap = new Dictionary<CPos, List<EditorActorPreview>>();
|
readonly Dictionary<CPos, List<EditorActorPreview>> cellMap = new Dictionary<CPos, List<EditorActorPreview>>();
|
||||||
|
|
||||||
SpatiallyPartitioned<EditorActorPreview> screenMap;
|
SpatiallyPartitioned<EditorActorPreview> screenMap;
|
||||||
@@ -75,7 +75,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
Add(kv.Key, new ActorReference(kv.Value.Value, kv.Value.ToDictionary()), true);
|
Add(kv.Key, new ActorReference(kv.Value.Value, kv.Value.ToDictionary()), true);
|
||||||
|
|
||||||
// Update neighbours in one pass
|
// Update neighbours in one pass
|
||||||
foreach (var p in previews.Values)
|
foreach (var p in previews)
|
||||||
UpdateNeighbours(p.Footprint);
|
UpdateNeighbours(p.Footprint);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,8 +84,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (wr.World.Type != WorldType.Editor)
|
if (wr.World.Type != WorldType.Editor)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
foreach (var kv in previews.Values)
|
foreach (var p in previews)
|
||||||
kv.Tick();
|
p.Tick();
|
||||||
}
|
}
|
||||||
|
|
||||||
static readonly IEnumerable<IRenderable> NoRenderables = Enumerable.Empty<IRenderable>();
|
static readonly IEnumerable<IRenderable> NoRenderables = Enumerable.Empty<IRenderable>();
|
||||||
@@ -105,7 +105,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
var owner = Players.Players[reference.InitDict.Get<OwnerInit>().PlayerName];
|
var owner = Players.Players[reference.InitDict.Get<OwnerInit>().PlayerName];
|
||||||
|
|
||||||
var preview = new EditorActorPreview(worldRenderer, id, reference, owner);
|
var preview = new EditorActorPreview(worldRenderer, id, reference, owner);
|
||||||
previews.Add(id, preview);
|
previews.Add(preview);
|
||||||
screenMap.Add(preview, preview.Bounds);
|
screenMap.Add(preview, preview.Bounds);
|
||||||
|
|
||||||
foreach (var kv in preview.Footprint)
|
foreach (var kv in preview.Footprint)
|
||||||
@@ -133,7 +133,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public void Remove(EditorActorPreview preview)
|
public void Remove(EditorActorPreview preview)
|
||||||
{
|
{
|
||||||
previews.Remove(preview.ID);
|
previews.Remove(preview);
|
||||||
screenMap.Remove(preview);
|
screenMap.Remove(preview);
|
||||||
|
|
||||||
foreach (var kv in preview.Footprint)
|
foreach (var kv in preview.Footprint)
|
||||||
@@ -156,7 +156,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
void SyncMultiplayerCount()
|
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();
|
var mp = Players.Players.Where(p => p.Key.StartsWith("Multi")).ToList();
|
||||||
foreach (var kv in mp)
|
foreach (var kv in mp)
|
||||||
{
|
{
|
||||||
@@ -246,7 +246,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
var id = previews.Count();
|
var id = previews.Count();
|
||||||
var possibleName = "Actor" + id.ToString();
|
var possibleName = "Actor" + id.ToString();
|
||||||
|
|
||||||
while (previews.ContainsKey(possibleName))
|
while (previews.Any(p => p.ID == possibleName))
|
||||||
{
|
{
|
||||||
id++;
|
id++;
|
||||||
possibleName = "Actor" + id.ToString();
|
possibleName = "Actor" + id.ToString();
|
||||||
@@ -259,7 +259,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
var nodes = new List<MiniYamlNode>();
|
var nodes = new List<MiniYamlNode>();
|
||||||
foreach (var a in previews)
|
foreach (var a in previews)
|
||||||
nodes.Add(new MiniYamlNode(a.Key, a.Value.Save()));
|
nodes.Add(new MiniYamlNode(a.ID, a.Save()));
|
||||||
|
|
||||||
return nodes;
|
return nodes;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user