diff --git a/Engine/Source/Editor/IntroTutorials/Private/STutorialButton.cpp b/Engine/Source/Editor/IntroTutorials/Private/STutorialButton.cpp index 2d131163309c..7032aa7e36a0 100644 --- a/Engine/Source/Editor/IntroTutorials/Private/STutorialButton.cpp +++ b/Engine/Source/Editor/IntroTutorials/Private/STutorialButton.cpp @@ -132,34 +132,34 @@ int32 STutorialButton::OnPaint(const FPaintArgs& Args, const FGeometry& Allotted FReply STutorialButton::HandleButtonClicked() { - UEditorTutorial* AttractTutorial = nullptr; - UEditorTutorial* LaunchTutorial = nullptr; - FString BrowserFilter; - GetDefault()->FindTutorialInfoForContext(Context, AttractTutorial, LaunchTutorial, BrowserFilter); + RefreshStatus(); - bTutorialAvailable = (LaunchTutorial != nullptr); - bTutorialCompleted = (LaunchTutorial != nullptr) && GetDefault()->HaveCompletedTutorial(LaunchTutorial); - bTutorialDismissed = (AttractTutorial != nullptr) && GetDefault()->IsTutorialDismissed(AttractTutorial); - - if (FEngineAnalytics::IsAvailable()) + if( FEngineAnalytics::IsAvailable() ) { TArray EventAttributes; EventAttributes.Add(FAnalyticsEventAttribute(TEXT("Context"), Context.ToString())); EventAttributes.Add(FAnalyticsEventAttribute(TEXT("TimeSinceAlertStarted"), (AlertStartTime != 0.0f && ShouldShowAlert()) ? (FPlatformTime::Seconds() - AlertStartTime) : -1.0f)); EventAttributes.Add(FAnalyticsEventAttribute(TEXT("LaunchedBrowser"), ShouldLaunchBrowser())); - FEngineAnalytics::GetProvider().RecordEvent(TEXT("Rocket.Tutorials.ClickedContextButton"), EventAttributes); + FEngineAnalytics::GetProvider().RecordEvent( TEXT("Rocket.Tutorials.ClickedContextButton"), EventAttributes ); } FIntroTutorials& IntroTutorials = FModuleManager::GetModuleChecked(TEXT("IntroTutorials")); - if (ShouldLaunchBrowser()) + if(ShouldLaunchBrowser()) { - IntroTutorials.SummonTutorialBrowser(ContextWindow, BrowserFilter); + IntroTutorials.SummonTutorialBrowser(ContextWindow.Pin().ToSharedRef(), CachedBrowserFilter); } - else if (LaunchTutorial != nullptr) + else if (CachedLaunchTutorial != nullptr) { + auto Delegate = FSimpleDelegate::CreateSP(this, &STutorialButton::HandleTutorialExited); + const bool bRestart = true; - IntroTutorials.LaunchTutorial(LaunchTutorial, bRestart, ContextWindow); + IntroTutorials.LaunchTutorial(CachedLaunchTutorial, bRestart, ContextWindow, Delegate, Delegate); + + const bool bDismissAcrossSessions = true; + GetMutableDefault()->DismissTutorial(CachedLaunchTutorial, bDismissAcrossSessions); + GetMutableDefault()->SaveProgress(); + bTutorialDismissed = true; } return FReply::Handled(); @@ -209,16 +209,16 @@ void STutorialButton::DismissAlert() { RefreshStatus(); - if( FEngineAnalytics::IsAvailable() ) - { - TArray EventAttributes; - EventAttributes.Add(FAnalyticsEventAttribute(TEXT("Context"), Context.ToString())); - EventAttributes.Add(FAnalyticsEventAttribute(TEXT("TimeSinceAlertStarted"), (AlertStartTime != 0.0f && ShouldShowAlert()) ? (FPlatformTime::Seconds() - AlertStartTime) : -1.0f)); + if( FEngineAnalytics::IsAvailable() ) + { + TArray EventAttributes; + EventAttributes.Add(FAnalyticsEventAttribute(TEXT("Context"), Context.ToString())); + EventAttributes.Add(FAnalyticsEventAttribute(TEXT("TimeSinceAlertStarted"), (AlertStartTime != 0.0f && ShouldShowAlert()) ? (FPlatformTime::Seconds() - AlertStartTime) : -1.0f)); - FEngineAnalytics::GetProvider().RecordEvent( TEXT("Rocket.Tutorials.DismissedTutorialAlert"), EventAttributes ); - } + FEngineAnalytics::GetProvider().RecordEvent( TEXT("Rocket.Tutorials.DismissedTutorialAlert"), EventAttributes ); + } - const bool bDismissAcrossSessions = true; + const bool bDismissAcrossSessions = true; if (CachedAttractTutorial != nullptr) { GetMutableDefault()->DismissTutorial(CachedAttractTutorial, bDismissAcrossSessions); @@ -227,12 +227,12 @@ void STutorialButton::DismissAlert() { GetMutableDefault()->DismissTutorial(CachedLaunchTutorial, bDismissAcrossSessions); } - GetMutableDefault()->SaveProgress(); - bTutorialDismissed = true; + GetMutableDefault()->SaveProgress(); + bTutorialDismissed = true; - FIntroTutorials& IntroTutorials = FModuleManager::GetModuleChecked(TEXT("IntroTutorials")); - IntroTutorials.CloseAllTutorialContent(); - } + FIntroTutorials& IntroTutorials = FModuleManager::GetModuleChecked(TEXT("IntroTutorials")); + IntroTutorials.CloseAllTutorialContent(); +} void STutorialButton::LaunchTutorial() {