From ad07bbddb536d348ff0cba079b09e9e492d42629 Mon Sep 17 00:00:00 2001 From: Remco Ros Date: Mon, 14 Aug 2023 21:54:28 +0200 Subject: [PATCH] read all XComEngine.ini files from the Config folder when reading MCOs fixes #249 --- .../xcom2-launcher/Classes/Mod/ModEntry.cs | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/xcom2-launcher/xcom2-launcher/Classes/Mod/ModEntry.cs b/xcom2-launcher/xcom2-launcher/Classes/Mod/ModEntry.cs index 0eede60..9135153 100644 --- a/xcom2-launcher/xcom2-launcher/Classes/Mod/ModEntry.cs +++ b/xcom2-launcher/xcom2-launcher/Classes/Mod/ModEntry.cs @@ -274,16 +274,24 @@ private IEnumerable GetUIScreenListenerOverrides() private IEnumerable GetClassOverrides() { - var file = FilePath.Combine(Path, "Config", "XComEngine.ini"); - - if (!File.Exists(file)) - return new ModClassOverride[0]; + var result = new List(); + var configPath = FilePath.Combine(Path, "Config"); + if (!Directory.Exists(configPath)) + { + return Array.Empty(); + } + + foreach (var file in Directory.GetFiles(configPath, "XComEngine.ini", SearchOption.AllDirectories)) + { + var modClassOverrides = from line in File.ReadLines(file) + select (l: line, match: s_classOverridesRegex.Match(s_whitespaceRegex.Replace(line, ""))) + into m + where m.match.Success + select new ModClassOverride(this, m.match.Groups[2].Value, m.match.Groups[1].Value, ModClassOverrideType.Class, m.l); + result.AddRange(modClassOverrides); + } - return from line in File.ReadLines(file) - select (l: line, match: s_classOverridesRegex.Match(s_whitespaceRegex.Replace(line, ""))) - into m - where m.match.Success - select new ModClassOverride(this, m.match.Groups[2].Value, m.match.Groups[1].Value, ModClassOverrideType.Class, m.l); + return result; } public void ShowOnSteam()