diff --git a/MareSynchronos/MareConfiguration/ConfigurationExtensions.cs b/MareSynchronos/MareConfiguration/ConfigurationExtensions.cs index a876578..f433484 100644 --- a/MareSynchronos/MareConfiguration/ConfigurationExtensions.cs +++ b/MareSynchronos/MareConfiguration/ConfigurationExtensions.cs @@ -8,6 +8,6 @@ public static class ConfigurationExtensions { return configuration.AcceptedAgreement && configuration.InitialScanComplete && !string.IsNullOrEmpty(configuration.CacheFolder) - && Directory.Exists(configuration.CacheFolder); + && Directory.Exists(configuration.CacheFolder) && configuration.AcceptedTOSVersion == configuration.ExpectedTOSVersion; } } \ No newline at end of file diff --git a/MareSynchronos/MareConfiguration/Configurations/MareConfig.cs b/MareSynchronos/MareConfiguration/Configurations/MareConfig.cs index 71804a9..c611a94 100644 --- a/MareSynchronos/MareConfiguration/Configurations/MareConfig.cs +++ b/MareSynchronos/MareConfiguration/Configurations/MareConfig.cs @@ -7,6 +7,8 @@ namespace MareSynchronos.MareConfiguration.Configurations; [Serializable] public class MareConfig : IMareConfiguration { + public int ExpectedTOSVersion = 1; + public int AcceptedTOSVersion { get; set; } = 0; public bool AcceptedAgreement { get; set; } = false; public string CacheFolder { get; set; } = string.Empty; public bool DisableOptionalPluginWarnings { get; set; } = false; diff --git a/MareSynchronos/UI/IntroUI.cs b/MareSynchronos/UI/IntroUI.cs index 925930b..35631df 100644 --- a/MareSynchronos/UI/IntroUI.cs +++ b/MareSynchronos/UI/IntroUI.cs @@ -106,7 +106,7 @@ public partial class IntroUi : WindowMediatorSubscriberBase { if (_uiShared.IsInGpose) return; - if (!_configService.Current.AcceptedAgreement && !_readFirstPage) + if ((!_configService.Current.AcceptedAgreement || _configService.Current.AcceptedTOSVersion != _configService.Current.ExpectedTOSVersion) && !_readFirstPage) { _uiShared.BigText("Welcome to Snowcloak"); ImGui.Separator(); @@ -125,7 +125,7 @@ public partial class IntroUi : WindowMediatorSubscriberBase #if !DEBUG _timeoutTask = Task.Run(async () => { - for (int i = 10; i > 0; i--) + for (int i = 45; i > 0; i--) { _timeoutLabel = $"'I agree' button will be available in {i}s"; await Task.Delay(TimeSpan.FromSeconds(1)).ConfigureAwait(false); @@ -136,7 +136,7 @@ public partial class IntroUi : WindowMediatorSubscriberBase #endif } } - else if (!_configService.Current.AcceptedAgreement && _readFirstPage) + else if ((!_configService.Current.AcceptedAgreement || _configService.Current.AcceptedTOSVersion != _configService.Current.ExpectedTOSVersion) && _readFirstPage) { using (_uiShared.UidFont.Push()) { @@ -189,6 +189,7 @@ public partial class IntroUi : WindowMediatorSubscriberBase if (ImGui.Button("I agree##toSetup")) { _configService.Current.AcceptedAgreement = true; + _configService.Current.AcceptedTOSVersion = _configService.Current.ExpectedTOSVersion; _configService.Save(); } } @@ -197,7 +198,7 @@ public partial class IntroUi : WindowMediatorSubscriberBase UiSharedService.TextWrapped(_timeoutLabel); } } - else if (_configService.Current.AcceptedAgreement + else if ((!_configService.Current.AcceptedAgreement || _configService.Current.AcceptedTOSVersion != _configService.Current.ExpectedTOSVersion) && (string.IsNullOrEmpty(_configService.Current.CacheFolder) || !_configService.Current.InitialScanComplete || !Directory.Exists(_configService.Current.CacheFolder)))