diff --git a/Knossos.NET/Classes/Knossos.cs b/Knossos.NET/Classes/Knossos.cs index 9ec507c3..b827c0e5 100644 --- a/Knossos.NET/Classes/Knossos.cs +++ b/Knossos.NET/Classes/Knossos.cs @@ -1162,6 +1162,40 @@ public static async void PlayMod(Mod mod, FsoExecType fsoExecType, bool standalo Log.Add(Log.LogSeverity.Information, "Knossos.PlayMod()", "Used cmdLine : " + cmdline); + if (MainWindow.instance != null && globalSettings.warnNewSettingsSystem) + { + try + { + var fsoVersion = new SemanticVersion(fsoBuild.version); + var newSettingsVersion = new SemanticVersion("24.2.0-RC"); + if(fsoVersion >= newSettingsVersion) + { + await Dispatcher.UIThread.InvokeAsync(async () => { + try + { + var res = await MessageBox.Show(MainWindow.instance, "Starting from FSO version 24.2.0 a new in-game settings system was implemented.\n" + + "Launcher settings, such as video, audio or input, and Command Line arguments of those categories no longer have an effect by default.\n" + + "Settings for most mods using FSO version 24.2.0 or higher must be now changed in-game by going to the 'Options' menu, where you will see additional methods for accessing and setting these new in-game options.", "New FSO settings system", MessageBox.MessageBoxButtons.DontWarnAgainOK); + + if (res == MessageBox.MessageBoxResult.DontWarnAgain) + { + globalSettings.warnNewSettingsSystem = false; + globalSettings.Save(); + } + } + catch + { + //fail silently, this is not important + } + }); + } + } + catch + { + //fail silently, this is not important + } + } + //Launch FSO!!! var fsoResult = await fsoBuild.RunFSO(fsoExecType, cmdline, rootPath, false); diff --git a/Knossos.NET/Models/GlobalSettings.cs b/Knossos.NET/Models/GlobalSettings.cs index 50f57084..0ba510d3 100644 --- a/Knossos.NET/Models/GlobalSettings.cs +++ b/Knossos.NET/Models/GlobalSettings.cs @@ -118,6 +118,8 @@ public AutoUpdateFsoBuilds(bool stable = false, bool rc = false, bool nightly = public int devModSort { get; set; } = 0; [JsonPropertyName("auto_update_fso_builds")] public AutoUpdateFsoBuilds autoUpdateBuilds { get; set; } = new AutoUpdateFsoBuilds(); + [JsonPropertyName("warn_new_settings_system")] + public bool warnNewSettingsSystem { get; set; } = true; /* FSO Settings that use the fs2_open.ini are json ignored */ @@ -608,6 +610,7 @@ public void Load() prefixCMD = tempSettings.prefixCMD; envVars = tempSettings.envVars; showDevOptions = tempSettings.showDevOptions; + warnNewSettingsSystem = tempSettings.warnNewSettingsSystem; if (MainWindowViewModel.Instance != null) MainWindowViewModel.Instance.sharedSortType = tempSettings.sortType; diff --git a/Knossos.NET/Views/GlobalSettingsView.axaml b/Knossos.NET/Views/GlobalSettingsView.axaml index a4b7c320..d1201081 100644 --- a/Knossos.NET/Views/GlobalSettingsView.axaml +++ b/Knossos.NET/Views/GlobalSettingsView.axaml @@ -143,6 +143,7 @@ + Note, video settings for most mods using FSO version 24.2.0 or higher will need to be changed in-game by default. You can change in-game settings by going to "Options" menu of the mod you are playing. @@ -243,6 +244,7 @@ + Note, audio settings for most mods using FSO version 24.2.0 or higher will need to be changed in-game by default. You can change in-game settings by going to "Options" menu of the mod you are playing.. @@ -314,6 +316,7 @@ + Note, input settings for most mods using FSO version 24.2.0 or higher will need to be changed in-game by default. You can change in-game settings by going to "Options" menu of the mod you are playing. Show(Window? parent, string text, string ti var result = MessageBoxResult.OK; - void AddButton(string caption, MessageBoxResult r, bool def = false, string classes = "") + void AddButton(string caption, MessageBoxResult r, bool def = false, string classes = "", int buttonWidth = -1) { var button = new Button { Content = caption, Width = 100}; button.Click += (_, __) => { @@ -60,6 +62,10 @@ void AddButton(string caption, MessageBoxResult r, bool def = false, string clas { button.Classes.Add(classes); } + if (buttonWidth != -1) + { + button.Width = buttonWidth; + } buttonPanel.Children.Add(button); if (def) { @@ -93,6 +99,12 @@ void AddButton(string caption, MessageBoxResult r, bool def = false, string clas AddButton("Details", MessageBoxResult.Details, false, "Option"); } + if (buttons == MessageBoxButtons.DontWarnAgainOK) + { + AddButton("OK", MessageBoxResult.OK, true, "Accept"); + AddButton("Don't warn again", MessageBoxResult.DontWarnAgain, false, "Option", 150); + } + var tcs = new TaskCompletionSource(); msgbox.Closed += delegate { tcs.TrySetResult(result); };