70 lines
1.7 KiB
C++
70 lines
1.7 KiB
C++
// Fill out your copyright notice in the Description page of Project Settings.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "Subsystems/GameInstanceSubsystem.h"
|
|
#include "TutorialManagerSubsystem.generated.h"
|
|
|
|
|
|
struct FTutorialStep;
|
|
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnStepComplete, int32, CompleteIndex);
|
|
/**
|
|
*
|
|
*/
|
|
UCLASS(BlueprintType)
|
|
class PROJECTFISH_API UTutorialManagerSubsystem : public UGameInstanceSubsystem
|
|
{
|
|
GENERATED_BODY()
|
|
public:
|
|
/** GameInstanceSubsystem */
|
|
virtual void Initialize(FSubsystemCollectionBase& Collection) override;
|
|
|
|
|
|
UFUNCTION(BlueprintCallable, Category= TutorialSubsystem)
|
|
void InitSteps(TArray<FTutorialStep> Steps);
|
|
|
|
UFUNCTION(BlueprintCallable, Category= TutorialSubsystem)
|
|
void ApplyCurrentTutorialStep();
|
|
UFUNCTION(BlueprintCallable, Category= TutorialSubsystem)
|
|
void CompleteTutorialStep();
|
|
UFUNCTION(BlueprintPure, Category= TutorialSubsystem)
|
|
FTutorialStep GetCurrentTutorialStep() const;
|
|
|
|
UFUNCTION(BlueprintCallable, Category= TutorialSubsystem)
|
|
void SetTutorialCompleteOnLevelLoaded();
|
|
void OnLevelLoaded(UWorld* World);
|
|
protected:
|
|
|
|
//显示对话框UI
|
|
void ShowDialogue();
|
|
UFUNCTION()
|
|
void OnDialogueCompleted();
|
|
//接受任务
|
|
void AccepAndFollowQuest();
|
|
//显示教程UI
|
|
void ShowTutorialUI();
|
|
//控制指定UI
|
|
void ControlUI();
|
|
//创建task
|
|
void CreateTask();
|
|
protected:
|
|
FDelegateHandle LevelLoadedDelegateHandle;
|
|
UPROPERTY(BlueprintAssignable)
|
|
FOnStepComplete OnStepComplete;
|
|
UPROPERTY(BlueprintReadOnly)
|
|
bool bTutorialing;
|
|
|
|
TArray<FTutorialStep> TutorialSteps;
|
|
int32 CurrentTutorialStep = 0;
|
|
FString DialogueUIPath;
|
|
UPROPERTY()
|
|
class UDialogueWidget_Base* DialogueWidget;
|
|
|
|
UPROPERTY()
|
|
UUserWidget* TutorialWidget;
|
|
|
|
UPROPERTY()
|
|
class UTutorialTask_Base* TutorialTaskObject;
|
|
};
|