From cb8921dc22e08e0fbd8ebf2abea41824063be6ef Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Wed, 15 Feb 2023 23:49:48 +0100 Subject: [PATCH] Fix the sequence filename update rule node placement --- .../20221203/ExplicitSequenceFilenames.cs | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/OpenRA.Mods.Common/UpdateRules/Rules/20221203/ExplicitSequenceFilenames.cs b/OpenRA.Mods.Common/UpdateRules/Rules/20221203/ExplicitSequenceFilenames.cs index 2b3297ef46..4169b7d354 100644 --- a/OpenRA.Mods.Common/UpdateRules/Rules/20221203/ExplicitSequenceFilenames.cs +++ b/OpenRA.Mods.Common/UpdateRules/Rules/20221203/ExplicitSequenceFilenames.cs @@ -207,25 +207,36 @@ namespace OpenRA.Mods.Common.UpdateRules.Rules } } + var inheritsNode = imageNode.LastChildMatching("Inherits"); + var inheritsNodeIndex = inheritsNode == null ? 0 : imageNode.Value.Nodes.IndexOf(inheritsNode) + 1; + var maxDuplicateTilesetCount = duplicateTilesetCount.MaxByOrDefault(kv => kv.Value).Value; if (maxDuplicateTilesetCount > 1) { - if (imageNode.LastChildMatching("Defaults") == null) - imageNode.Value.Nodes.Insert(0, new MiniYamlNode("Defaults", "")); + var defaultsNode = imageNode.LastChildMatching("Defaults"); + if (defaultsNode == null) + { + defaultsNode = new MiniYamlNode("Defaults", ""); + imageNode.Value.Nodes.Insert(inheritsNodeIndex, defaultsNode); + } var nodes = MiniYaml.FromString(duplicateTilesetCount.First(kv => kv.Value == maxDuplicateTilesetCount).Key); defaultTilesetFilenamesNode = new MiniYamlNode("TilesetFilenames", "", nodes); - imageNode.LastChildMatching("Defaults").Value.Nodes.Insert(0, defaultTilesetFilenamesNode); + defaultsNode.Value.Nodes.Insert(0, defaultTilesetFilenamesNode); } var maxDuplicateCount = duplicateCount.MaxByOrDefault(kv => kv.Value).Value; if (maxDuplicateCount > 1) { - if (imageNode.LastChildMatching("Defaults") == null) - imageNode.Value.Nodes.Insert(0, new MiniYamlNode("Defaults", "")); + var defaultsNode = imageNode.LastChildMatching("Defaults"); + if (defaultsNode == null) + { + defaultsNode = new MiniYamlNode("Defaults", ""); + imageNode.Value.Nodes.Insert(inheritsNodeIndex, defaultsNode); + } defaultFilenameNode = new MiniYamlNode("Filename", duplicateCount.First(kv => kv.Value == maxDuplicateCount).Key); - imageNode.LastChildMatching("Defaults").Value.Nodes.Insert(0, defaultFilenameNode); + defaultsNode.Value.Nodes.Insert(0, defaultFilenameNode); } }