From 76144d6e5d6b0be9d71e13a9062f9b2365512919 Mon Sep 17 00:00:00 2001 From: Bradley Newman Date: Sun, 8 Sep 2024 08:33:33 +0930 Subject: [PATCH] Fix mods being erroneously removed when loading configs, Trim mod name, ID and version strings to make less error-prone --- ArmaReforgerServerTool/Forms/AddModDialog.cs | 8 +++--- ArmaReforgerServerTool/Forms/Main.cs | 26 ++++++++++--------- .../Managers/ConfigurationManager.cs | 26 +++++++++++++++++-- .../ReforgerServerApp.csproj | 4 +-- version.txt | 2 +- 5 files changed, 45 insertions(+), 21 deletions(-) diff --git a/ArmaReforgerServerTool/Forms/AddModDialog.cs b/ArmaReforgerServerTool/Forms/AddModDialog.cs index b0b9942..421fece 100644 --- a/ArmaReforgerServerTool/Forms/AddModDialog.cs +++ b/ArmaReforgerServerTool/Forms/AddModDialog.cs @@ -54,17 +54,17 @@ private void CancelBtnPressed(object sender, EventArgs e) /// private void AddBtnPressed(object sender, EventArgs e) { - if (!string.IsNullOrWhiteSpace(modId.Text) && !string.IsNullOrWhiteSpace(modName.Text)) + if (!string.IsNullOrWhiteSpace(modId.Text.Trim()) && !string.IsNullOrWhiteSpace(modName.Text.Trim())) { Mod mod; - if (!string.IsNullOrWhiteSpace(modVers.Text)) + if (!string.IsNullOrWhiteSpace(modVers.Text.Trim())) { - mod = new(modId.Text, modName.Text, modVers.Text); + mod = new(modId.Text.Trim(), modName.Text.Trim()); } else { - mod = new(modId.Text, modName.Text); + mod = new(modId.Text.Trim(), modName.Text.Trim()); } if (m_isEditMode) { diff --git a/ArmaReforgerServerTool/Forms/Main.cs b/ArmaReforgerServerTool/Forms/Main.cs index ebcd748..e808d0d 100644 --- a/ArmaReforgerServerTool/Forms/Main.cs +++ b/ArmaReforgerServerTool/Forms/Main.cs @@ -163,8 +163,13 @@ private void AddModBtnPressed(object sender, EventArgs e) /// private void AvailableModsSelectedIndexChanged(object sender, EventArgs e) { - editModBtn.Enabled = availableMods.SelectedItem != null; - removeModBtn.Enabled = availableMods.SelectedItem != null; + // If the server is running, we don't want to be able to edit / remove mods + if (string.IsNullOrWhiteSpace(serverRunningLabel.Text)) + { + editModBtn.Enabled = availableMods.SelectedItem != null; + removeModBtn.Enabled = availableMods.SelectedItem != null; + } + } /// @@ -206,11 +211,9 @@ private void AddToEnabledModsBtnPressed(object sender, EventArgs e) { Mod m = (Mod)GetAvailableModsList().SelectedItem; - if (!ConfigurationManager.GetInstance().GetEnabledMods().Contains(m)) - { - ConfigurationManager.GetInstance().GetEnabledMods().Add(new(m)); - } - ConfigurationManager.GetInstance().GetAvailableMods().Remove(m); + // Move mod from Available Mods -> Enabled Mods + ConfigurationManager.MoveMod(m, ConfigurationManager.GetInstance().GetAvailableMods(), + ConfigurationManager.GetInstance().GetEnabledMods()); } ConfigurationManager.GetInstance().AlphabetiseModLists(); ResetModFilters(); @@ -230,11 +233,9 @@ private void RemovedFromEnabledModsBtnPressed(object sender, EventArgs e) { Mod m = (Mod)GetEnabledModsList().SelectedItem; - if (!ConfigurationManager.GetInstance().GetAvailableMods().Contains(m)) - { - ConfigurationManager.GetInstance().GetAvailableMods().Add(new(m)); - } - ConfigurationManager.GetInstance().GetEnabledMods().Remove(m); + // Move mod from Enabled Mods -> Available Mods + ConfigurationManager.MoveMod(m, ConfigurationManager.GetInstance().GetEnabledMods(), + ConfigurationManager.GetInstance().GetAvailableMods()); } ConfigurationManager.GetInstance().AlphabetiseModLists(); ResetModFilters(); @@ -257,6 +258,7 @@ private void SaveSettingsToFileBtnPressed(object sender, EventArgs e) /// private void LoadSettingsFromFileBtnPressed(object sender, EventArgs e) { + ResetModFilters(); FileIOManager.LoadConfigurationFromFile(); } diff --git a/ArmaReforgerServerTool/Managers/ConfigurationManager.cs b/ArmaReforgerServerTool/Managers/ConfigurationManager.cs index 565c47e..dd47cd9 100644 --- a/ArmaReforgerServerTool/Managers/ConfigurationManager.cs +++ b/ArmaReforgerServerTool/Managers/ConfigurationManager.cs @@ -78,6 +78,12 @@ public Dictionary GetServerParametersDictionary() /// public void PopulateServerConfiguration(string input) { + // First move mods back to available mods so we don't lose them + for (int i = 0; i < m_enabledMods.Count; i++) + { + MoveMod(m_enabledMods[i], m_enabledMods, m_availableMods); + } + try { Log.Debug("ConfigurationManager - Populating Server Configuration from {input}", input); @@ -150,8 +156,6 @@ public void PopulateServerConfiguration(string input) m_serverParamsDictionary["slotReservationTimeout"].ParameterValue = m_serverConfig.root.operating.slotReservationTimeout; m_serverParamsDictionary["disableAI"].ParameterValue = m_serverConfig.root.operating.disableAI; - m_enabledMods.Clear(); - foreach (Mod m in m_serverConfig.root.game.mods) { m_enabledMods.Add(m); @@ -266,6 +270,24 @@ public void AlphabetiseModLists() } } + /// + /// Utility method for moving a mod from one list to another + /// + /// Mod to move + /// List to move mod from + /// List to move mod to + public static void MoveMod(Mod m, BindingList from, BindingList to) + { + if (to.Contains(m)) + { + from.Remove(m); + } else + { + to.Add(m); + from.Remove(m); + } + } + /// /// Sender for the 'UpdateScenarioIdFromLoadedConfig' Event /// diff --git a/ArmaReforgerServerTool/ReforgerServerApp.csproj b/ArmaReforgerServerTool/ReforgerServerApp.csproj index 95d5400..f70102a 100644 --- a/ArmaReforgerServerTool/ReforgerServerApp.csproj +++ b/ArmaReforgerServerTool/ReforgerServerApp.csproj @@ -7,8 +7,8 @@ enable False soda3x - 0.9.0 - 0.9.0 + 0.9.0.1 + 0.9.0.1 Resources\arma_icon_white.ico true winexe diff --git a/version.txt b/version.txt index 899f24f..e608a6e 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -0.9.0 \ No newline at end of file +0.9.0.1 \ No newline at end of file