Files
UnrealEngineUWP/Engine/Source/Editor/IntroTutorials/Private/TutorialStateSettings.h
Richard Hinckley 1ec5bc94fb [UE-10992] Dismiss-all added to right-click menu on tutorial button. Stops green pulse animation on all tutorial buttons and saves to config file.
Known minor bug: If multiple windows are open with pulses animating, only the one that is given the "dismiss all" command will stop animating. The others will continue until their windows are closed and reopened, or they are dismissed individually.

[CL 2486244 by Richard Hinckley in Main branch]
2015-03-20 11:54:33 -04:00

81 lines
2.1 KiB
C++

// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "EditorTutorial.h"
#include "TutorialStateSettings.generated.h"
/** Track the progress of an individual tutorial */
USTRUCT()
struct FTutorialProgress
{
GENERATED_USTRUCT_BODY()
FTutorialProgress()
{
bUserDismissedThisSession = false;
}
UPROPERTY()
FStringClassReference Tutorial;
UPROPERTY()
int32 CurrentStage;
UPROPERTY()
bool bUserDismissed;
/** Non-persistent flag indicating the user dismissed this tutorial */
bool bUserDismissedThisSession;
};
/** Tutorial settings used to track completion state */
UCLASS(config=EditorGameAgnostic)
class UTutorialStateSettings : public UObject
{
GENERATED_UCLASS_BODY()
UPROPERTY(Config)
TArray<FTutorialProgress> TutorialsProgress;
/** UObject interface */
virtual void PostInitProperties() override;
/** Reset the progress and completion sate of all tutorials */
void ClearProgress();
/** Get the recorded progress of the pass-in tutorial */
int32 GetProgress(UEditorTutorial* InTutorial, bool& bOutHaveSeenTutorial) const;
/** Check if we have seen the passed-in tutorial before */
bool HaveSeenTutorial(UEditorTutorial* InTutorial) const;
/** Check if completed the passed in tutorial (i.e. seen all of its stages) */
bool HaveCompletedTutorial(UEditorTutorial* InTutorial) const;
/** Flag a tutorial as dismissed */
void DismissTutorial(UEditorTutorial* InTutorial, bool bDismissAcrossSessions);
/** Check if a tutorial has been dismissed */
bool IsTutorialDismissed(UEditorTutorial* InTutorial) const;
/** Record the progress of the passed-in tutorial */
void RecordProgress(UEditorTutorial* InTutorial, int32 CurrentStage);
/** Save the progress of all our tutorials */
void SaveProgress();
/** Dismiss all tutorials, used by right-click option on scholar cap button (STutorialButton) */
void DismissAllTutorials();
/** Returns true if user has dismissed tutorials */
bool AreAllTutorialsDismissed();
private:
/** Recorded progress */
TMap<UEditorTutorial*, FTutorialProgress> ProgressMap;
/** Record if user has chosen to cancel all tutorials */
UPROPERTY(Config)
bool bDismissedAllTutorials;
};