diff --git a/OpenRA.Game/Map/ActorReference.cs b/OpenRA.Game/Map/ActorReference.cs index d6afd6a04e..b633f08b3b 100644 --- a/OpenRA.Game/Map/ActorReference.cs +++ b/OpenRA.Game/Map/ActorReference.cs @@ -30,15 +30,15 @@ namespace OpenRA internal TypeDictionary InitDict => initDict.Value; public ActorReference(string type) - : this(type, new Dictionary()) { } + : this(type, new MiniYaml("")) { } - public ActorReference(string type, Dictionary inits) + public ActorReference(string type, MiniYaml inits) { Type = type; initDict = Exts.Lazy(() => { var dict = new TypeDictionary(); - foreach (var i in inits) + foreach (var i in inits.Nodes) { var init = LoadInit(i.Key, i.Value); if (init is ISingleInstanceInit && dict.Contains(init.GetType())) diff --git a/OpenRA.Game/Map/Map.cs b/OpenRA.Game/Map/Map.cs index 2e2f7f3c7c..9f870c8a3d 100644 --- a/OpenRA.Game/Map/Map.cs +++ b/OpenRA.Game/Map/Map.cs @@ -756,7 +756,7 @@ namespace OpenRA var positions = new List<(MPos Uv, Color Color)>(); foreach (var actor in actors) { - var s = new ActorReference(actor.Value.Value, actor.Value.ToDictionary()); + var s = new ActorReference(actor.Value.Value, actor.Value); var ai = Rules.Actors[actor.Value.Value]; var impsis = ai.TraitInfos(); diff --git a/OpenRA.Game/Map/MapPreview.cs b/OpenRA.Game/Map/MapPreview.cs index 860d381281..6f9aec22b2 100644 --- a/OpenRA.Game/Map/MapPreview.cs +++ b/OpenRA.Game/Map/MapPreview.cs @@ -429,7 +429,7 @@ namespace OpenRA var spawns = new List(); foreach (var kv in actorDefinitions.Nodes.Where(d => d.Value.Value == "mpspawn")) { - var s = new ActorReference(kv.Value.Value, kv.Value.ToDictionary()); + var s = new ActorReference(kv.Value.Value, kv.Value); spawns.Add(s.Get().Value); } diff --git a/OpenRA.Mods.Cnc/Traits/World/TSVeinsRenderer.cs b/OpenRA.Mods.Cnc/Traits/World/TSVeinsRenderer.cs index 887b012399..e060eb26df 100644 --- a/OpenRA.Mods.Cnc/Traits/World/TSVeinsRenderer.cs +++ b/OpenRA.Mods.Cnc/Traits/World/TSVeinsRenderer.cs @@ -65,7 +65,7 @@ namespace OpenRA.Mods.Cnc.Traits if (!VeinholeActors.Contains(type)) continue; - var actorReference = new ActorReference(type, kv.Value.ToDictionary()); + var actorReference = new ActorReference(type, kv.Value); var location = actorReference.Get(); var veinholeInfo = map.Rules.Actors[actorReference.Type]; foreach (var cell in veinholeInfo.TraitInfo().OccupiedCells(veinholeInfo, location.Value)) diff --git a/OpenRA.Mods.Common/Lint/CheckOwners.cs b/OpenRA.Mods.Common/Lint/CheckOwners.cs index c5ccc50ce2..c702c7de90 100644 --- a/OpenRA.Mods.Common/Lint/CheckOwners.cs +++ b/OpenRA.Mods.Common/Lint/CheckOwners.cs @@ -30,7 +30,7 @@ namespace OpenRA.Mods.Common.Lint foreach (var kv in map.ActorDefinitions) { - var actorReference = new ActorReference(kv.Value.Value, kv.Value.ToDictionary()); + var actorReference = new ActorReference(kv.Value.Value, kv.Value); var ownerInit = actorReference.GetOrDefault(); if (ownerInit == null) emitError($"Actor `{kv.Key}` is not owned by any player."); diff --git a/OpenRA.Mods.Common/Lint/CheckPlayers.cs b/OpenRA.Mods.Common/Lint/CheckPlayers.cs index 9189a97e47..50317e25ed 100644 --- a/OpenRA.Mods.Common/Lint/CheckPlayers.cs +++ b/OpenRA.Mods.Common/Lint/CheckPlayers.cs @@ -27,7 +27,7 @@ namespace OpenRA.Mods.Common.Lint var spawns = new List(); foreach (var kv in map.ActorDefinitions.Where(d => d.Value.Value == "mpspawn")) { - var s = new ActorReference(kv.Value.Value, kv.Value.ToDictionary()); + var s = new ActorReference(kv.Value.Value, kv.Value); spawns.Add(s.Get().Value); } diff --git a/OpenRA.Mods.Common/Traits/World/EditorActorLayer.cs b/OpenRA.Mods.Common/Traits/World/EditorActorLayer.cs index d6fddd0053..259ad0cbf6 100644 --- a/OpenRA.Mods.Common/Traits/World/EditorActorLayer.cs +++ b/OpenRA.Mods.Common/Traits/World/EditorActorLayer.cs @@ -97,7 +97,7 @@ namespace OpenRA.Mods.Common.Traits { var kv = world.Map.ActorDefinitions.ElementAt(i); names[i] = kv.Key; - references.Add(new ActorReference(kv.Value.Value, kv.Value.ToDictionary())); + references.Add(new ActorReference(kv.Value.Value, kv.Value)); } AddRange(CollectionsMarshal.AsSpan(references), names); diff --git a/OpenRA.Mods.Common/Traits/World/MapStartingLocations.cs b/OpenRA.Mods.Common/Traits/World/MapStartingLocations.cs index 7a4ffe4419..8d63f49e23 100644 --- a/OpenRA.Mods.Common/Traits/World/MapStartingLocations.cs +++ b/OpenRA.Mods.Common/Traits/World/MapStartingLocations.cs @@ -131,7 +131,7 @@ namespace OpenRA.Mods.Common.Traits var spawns = new List(); foreach (var n in self.World.Map.ActorDefinitions) if (n.Value.Value == "mpspawn") - spawns.Add(new ActorReference(n.Key, n.Value.ToDictionary()).GetValue()); + spawns.Add(new ActorReference(n.Key, n.Value).GetValue()); spawnLocations = spawns.ToArray(); diff --git a/OpenRA.Mods.Common/Traits/World/SpawnMapActors.cs b/OpenRA.Mods.Common/Traits/World/SpawnMapActors.cs index 1abf971be8..bc6a257894 100644 --- a/OpenRA.Mods.Common/Traits/World/SpawnMapActors.cs +++ b/OpenRA.Mods.Common/Traits/World/SpawnMapActors.cs @@ -33,7 +33,7 @@ namespace OpenRA.Mods.Common.Traits foreach (var kv in world.Map.ActorDefinitions) { - var actorReference = new ActorReference(kv.Value.Value, kv.Value.ToDictionary()); + var actorReference = new ActorReference(kv.Value.Value, kv.Value); // If an actor's doesn't have a valid owner transfer ownership to neutral var ownerInit = actorReference.Get(); diff --git a/OpenRA.Mods.Common/UtilityCommands/ResizeMapCommand.cs b/OpenRA.Mods.Common/UtilityCommands/ResizeMapCommand.cs index 6b4cc2dab9..6f7d1bebbe 100644 --- a/OpenRA.Mods.Common/UtilityCommands/ResizeMapCommand.cs +++ b/OpenRA.Mods.Common/UtilityCommands/ResizeMapCommand.cs @@ -57,7 +57,7 @@ namespace OpenRA.Mods.Common.UtilityCommands foreach (var kv in map.ActorDefinitions) { - var actor = new ActorReference(kv.Value.Value, kv.Value.ToDictionary()); + var actor = new ActorReference(kv.Value.Value, kv.Value); var locationInit = actor.GetOrDefault(); if (locationInit == null) continue; diff --git a/OpenRA.Mods.Common/Widgets/GeneratedMapPreviewWidget.cs b/OpenRA.Mods.Common/Widgets/GeneratedMapPreviewWidget.cs index 5baa7773da..8a2e2735c5 100644 --- a/OpenRA.Mods.Common/Widgets/GeneratedMapPreviewWidget.cs +++ b/OpenRA.Mods.Common/Widgets/GeneratedMapPreviewWidget.cs @@ -65,7 +65,7 @@ namespace OpenRA.Mods.Common.Widgets { var spawnPoints = map.ActorDefinitions .Where(d => d.Value.Value == "mpspawn") - .Select(kv => new ActorReference(kv.Value.Value, kv.Value.ToDictionary()).Get().Value); + .Select(kv => new ActorReference(kv.Value.Value, kv.Value).Get().Value); Update(spawnPoints, map.Bounds, map.Grid.Type, new Png(map.Package.GetStream("map.png"))); } diff --git a/OpenRA.Mods.Common/Widgets/Logic/Editor/MapGeneratorToolLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Editor/MapGeneratorToolLogic.cs index 54de609ba3..b2627c8862 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Editor/MapGeneratorToolLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Editor/MapGeneratorToolLogic.cs @@ -295,7 +295,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic .ToDictionary(player => player.Name); foreach (var kv in generatedMap.ActorDefinitions) { - var actorReference = new ActorReference(kv.Value.Value, kv.Value.ToDictionary()); + var actorReference = new ActorReference(kv.Value.Value, kv.Value); var ownerInit = actorReference.Get(); if (!players.TryGetValue(ownerInit.InternalName, out var owner)) throw new MapGenerationException("Generator produced mismatching player and actor definitions.");