From ebc82cc75daae9ec76a0205d440042cc0a75ec72 Mon Sep 17 00:00:00 2001 From: Salvador Cipolla Date: Wed, 19 Feb 2025 18:56:50 -0300 Subject: [PATCH 1/3] Allow to reset or ignore ingame options from mod settings window --- Knossos.NET/Classes/Knossos.cs | 5 ++ Knossos.NET/Models/ModSettings.cs | 3 + .../Windows/ModSettingsViewModel.cs | 56 ++++++++++++++++++- .../Views/Windows/ModSettingsView.axaml | 12 +++- 4 files changed, 74 insertions(+), 2 deletions(-) diff --git a/Knossos.NET/Classes/Knossos.cs b/Knossos.NET/Classes/Knossos.cs index dfba3470..62aa3169 100644 --- a/Knossos.NET/Classes/Knossos.cs +++ b/Knossos.NET/Classes/Knossos.cs @@ -986,6 +986,11 @@ public static async void PlayMod(Mod mod, FsoExecType fsoExecType, bool standalo var modList = new List(); FsoBuild? fsoBuild = specifiedBuild; + if(mod.modSettings.noIngameOptions) + { + cmdline += " -no_ingame_options"; + } + if(additionalCmd != null) { cmdline += " " + additionalCmd; diff --git a/Knossos.NET/Models/ModSettings.cs b/Knossos.NET/Models/ModSettings.cs index f73e8f4b..6663ccb6 100644 --- a/Knossos.NET/Models/ModSettings.cs +++ b/Knossos.NET/Models/ModSettings.cs @@ -45,6 +45,9 @@ public class ModSettings [JsonIgnore] private string? filePath = null; + [JsonPropertyName("no_ingame_options")] + public bool noIngameOptions { get; set; } = false; + public ModSettings() { } diff --git a/Knossos.NET/ViewModels/Windows/ModSettingsViewModel.cs b/Knossos.NET/ViewModels/Windows/ModSettingsViewModel.cs index 6622c7ab..5b28def8 100644 --- a/Knossos.NET/ViewModels/Windows/ModSettingsViewModel.cs +++ b/Knossos.NET/ViewModels/Windows/ModSettingsViewModel.cs @@ -10,6 +10,7 @@ using System; using System.IO; using VP.NET; +using System.Diagnostics; namespace Knossos.NET.ViewModels { @@ -50,6 +51,10 @@ public partial class ModSettingsViewModel : ViewModelBase internal bool ignoreGlobalCmd = false; [ObservableProperty] internal string buildMissingWarning = string.Empty; + [ObservableProperty] + internal bool noIngameOptions = false; + [ObservableProperty] + internal bool ingameOptionsFileExist = false; public ModSettingsViewModel() { @@ -81,6 +86,7 @@ public ModSettingsViewModel(Mod modJson, ModCardViewModel? modCard=null) isDevMode = modJson.devMode; compressed = modJson.modSettings.isCompressed; ignoreGlobalCmd = modJson.modSettings.ignoreGlobalCmd; + noIngameOptions = modJson.modSettings.noIngameOptions; if (Knossos.globalSettings.modCompression != CompressionSettings.Disabled && !modJson.modSettings.isCompressed) { compressionAvailable = true; @@ -130,7 +136,7 @@ public ModSettingsViewModel(Mod modJson, ModCardViewModel? modCard=null) } } } - + CheckIfOptionsFileExist(); //Size Task.Factory.StartNew(() => UpdateModSize()); } @@ -331,6 +337,7 @@ internal void SaveSettingsCommand() } modJson.modSettings.ignoreGlobalCmd = IgnoreGlobalCmd; + modJson.modSettings.noIngameOptions = NoIngameOptions; modJson.modSettings.Save(); if(modCardViewModel != null) @@ -520,5 +527,52 @@ internal async void DecompressCommand() await Task.Factory.StartNew(() => UpdateModSize()); } } + + internal void DeleteIngameOptions() + { + try + { + if (IngameOptionsFileExist) + { + File.Delete(Path.Combine(KnUtils.GetFSODataFolderPath(), "data", modJson!.id + "_settings.ini")); + } + CheckIfOptionsFileExist(); + } + catch (Exception ex) + { + Log.Add(Log.LogSeverity.Error, "ModSettingsViewModel.DeleteIngameOptions()", ex); + } + } + + internal void ViewIngameOptions() + { + if (File.Exists(Path.Combine(KnUtils.GetFSODataFolderPath(), "data", modJson!.id + "_settings.ini"))) + { + try + { + var cmd = new Process(); + cmd.StartInfo.FileName = Path.Combine(KnUtils.GetFSODataFolderPath(), "data", modJson!.id + "_settings.ini"); + cmd.StartInfo.UseShellExecute = true; + cmd.Start(); + cmd.Dispose(); + } + catch (Exception ex) + { + Log.Add(Log.LogSeverity.Error, "MainWindowViewModel.ViewIngameOptions", ex); + } + } + } + + private void CheckIfOptionsFileExist() + { + try + { + IngameOptionsFileExist = File.Exists(Path.Combine(KnUtils.GetFSODataFolderPath(), "data", modJson!.id + "_settings.ini")); + } + catch (Exception ex) + { + Log.Add(Log.LogSeverity.Error, "ModSettingsViewModel.CheckIfOptionsFileExist()", ex); + } + } } } diff --git a/Knossos.NET/Views/Windows/ModSettingsView.axaml b/Knossos.NET/Views/Windows/ModSettingsView.axaml index 5274e9f4..bb102256 100644 --- a/Knossos.NET/Views/Windows/ModSettingsView.axaml +++ b/Knossos.NET/Views/Windows/ModSettingsView.axaml @@ -34,6 +34,17 @@ + + + + Disable ingame options + + + + + + + @@ -42,7 +53,6 @@ Do not apply global settings or global Command Line on this mod - From 57e8be0bcf1018ae1f47b3423561941f097e8606 Mon Sep 17 00:00:00 2001 From: Salvador Cipolla Date: Thu, 20 Feb 2025 13:38:22 -0300 Subject: [PATCH 2/3] change ingame to in-game --- Knossos.NET/Views/Windows/ModSettingsView.axaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Knossos.NET/Views/Windows/ModSettingsView.axaml b/Knossos.NET/Views/Windows/ModSettingsView.axaml index bb102256..7e05e29a 100644 --- a/Knossos.NET/Views/Windows/ModSettingsView.axaml +++ b/Knossos.NET/Views/Windows/ModSettingsView.axaml @@ -36,13 +36,13 @@ - - Disable ingame options + + Disable in-game options - + - + From b87ae4c75595c072f655312d380adc64a53c118c Mon Sep 17 00:00:00 2001 From: Salvador Cipolla Date: Thu, 20 Feb 2025 22:05:05 -0300 Subject: [PATCH 3/3] change height to 650 --- Knossos.NET/Views/Windows/ModSettingsView.axaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Knossos.NET/Views/Windows/ModSettingsView.axaml b/Knossos.NET/Views/Windows/ModSettingsView.axaml index 7e05e29a..b072766c 100644 --- a/Knossos.NET/Views/Windows/ModSettingsView.axaml +++ b/Knossos.NET/Views/Windows/ModSettingsView.axaml @@ -11,7 +11,7 @@ WindowStartupLocation="CenterScreen" Title="{Binding Title}" SizeToContent="Width" - Height="750" + Height="650" CanResize="True">