0
0
mirror of https://github.com/sp-tarkov/modules.git synced 2025-02-13 05:30:43 -05:00

Fix the BE message showing every launch (#19)

* Fix the BE message showing every launch

BSG changed how events work for ShowCriticalErrorScreen, so use the new method of attaching event handlers

* Woops, debug change slipped through

---------

Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
This commit is contained in:
DrakiaXYZ 2025-01-05 01:03:31 -08:00 committed by GitHub
parent 4f31d0bf1d
commit f6c873096e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -39,6 +39,9 @@ namespace SPT.Custom.Utils
private bool _isBetaDisclaimerOpen; private bool _isBetaDisclaimerOpen;
private ManualLogSource _logger; private ManualLogSource _logger;
// This GClass can be found by looking at ErrorScreen.cs and seeing what the ErrorClass class inherits from: `Window<GClass####>`
private GClass3540 _betaMessageContext;
public void Start() public void Start()
{ {
_logger = BepInEx.Logging.Logger.CreateLogSource(nameof(MenuNotificationManager)); _logger = BepInEx.Logging.Logger.CreateLogSource(nameof(MenuNotificationManager));
@ -105,7 +108,11 @@ namespace SPT.Custom.Utils
{ {
if (Singleton<PreloaderUI>.Instantiated && ShouldShowBetaMessage()) if (Singleton<PreloaderUI>.Instantiated && ShouldShowBetaMessage())
{ {
Singleton<PreloaderUI>.Instance.ShowCriticalErrorScreen(sptVersion, release.betaDisclaimerText, ErrorScreen.EButtonType.OkButton, release.betaDisclaimerTimeoutDelay); _betaMessageContext = Singleton<PreloaderUI>.Instance.ShowCriticalErrorScreen(sptVersion, release.betaDisclaimerText, ErrorScreen.EButtonType.OkButton, release.betaDisclaimerTimeoutDelay);
// Note: This looks backwards, but a timeout counts as "Accept" and clicking the button counts as "Decline"
_betaMessageContext.OnAccept += OnBetaMessageTimeOut;
_betaMessageContext.OnDecline += OnBetaMessageAccepted;
_betaMessageContext.OnClose += OnBetaMessageClosed;
_isBetaDisclaimerOpen = true; _isBetaDisclaimerOpen = true;
} }
} }
@ -120,20 +127,29 @@ namespace SPT.Custom.Utils
} }
} }
// User accepted the terms, allow to continue. // User accepted the BE terms, allow to continue.
private void OnMessageAccepted() private void OnBetaMessageAccepted()
{ {
_logger.LogInfo(release.betaDisclaimerAcceptText); _logger.LogInfo(release.betaDisclaimerAcceptText);
PlayerPrefs.SetInt("SPT_AcceptedBETerms", 1); PlayerPrefs.SetInt("SPT_AcceptedBETerms", 1);
_isBetaDisclaimerOpen = false; _isBetaDisclaimerOpen = false;
} }
// If the user doesnt accept the message "Ok" then the game will close. // User didn't accept the BE terms, exit the game
private void OnTimeOut() private void OnBetaMessageTimeOut()
{ {
Application.Quit(); Application.Quit();
} }
// Unhook events once the beta message is closed
private void OnBetaMessageClosed()
{
// Note: This looks backwards, but a timeout counts as "Accept" and clicking the button counts as "Decline"
_betaMessageContext.OnAccept -= OnBetaMessageTimeOut;
_betaMessageContext.OnDecline -= OnBetaMessageAccepted;
_betaMessageContext.OnClose -= OnBetaMessageClosed;
}
// Stores the current build in the registry to check later // Stores the current build in the registry to check later
// Return true if changed, false if not // Return true if changed, false if not
private void SetVersionPref() private void SetVersionPref()