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); };