Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
ScenarioCutsceneWidget.h
이 파일의 문서화 페이지로 가기
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "InputCoreTypes.h"
7#include "Input/Reply.h"
10#include "ScenarioCutsceneWidget.generated.h"
11
12class UImage;
13class UTextBlock;
14class UWidget;
15
16UENUM(BlueprintType)
17enum class EScenarioCutsceneState : uint8
18{
19 None = 0,
20 Typing = 1,
21 Finished = 2,
22 WaitingInput = 4
23};
24
28UCLASS(BlueprintType, Blueprintable)
30{
31 GENERATED_BODY()
32
33public:
34 UScenarioCutsceneWidget(const FObjectInitializer& ObjectInitializer);
35
36public:
37 virtual void NativeConstruct() override;
38 virtual void NativeTick(const FGeometry& MyGeometry, float InDeltaTime) override;
39 virtual FReply NativeOnKeyDown(const FGeometry& InGeometry, const FKeyEvent& InKeyEvent) override;
40 virtual FReply NativeOnMouseButtonDown(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent) override;
41
42public:
43 UFUNCTION(BlueprintCallable, Category = "Cutscene")
44 void StartCutscene(const TArray<FDT_ScenarioCutsceneTable>& InCutsceneRows);
45
46 UFUNCTION(BlueprintCallable, Category = "Cutscene")
47 void AdvanceCutscene();
48
49 UFUNCTION(BlueprintCallable, Category = "Cutscene")
50 void SkipCutscene();
51
52 UFUNCTION(BlueprintCallable, Category = "Cutscene")
53 void ConfigureTypewriter(bool bInUseTypewriter, float InCharactersPerSecond);
54
55 UFUNCTION(BlueprintPure, Category = "Cutscene")
56 bool IsCutsceneFinished() const;
57
58 UFUNCTION(BlueprintPure, Category = "Cutscene")
59 EScenarioCutsceneState GetCutsceneState() const;
60
61protected:
62 UFUNCTION(BlueprintImplementableEvent, Category = "Cutscene")
63 void OnCutsceneStarted();
64
65 UFUNCTION(BlueprintImplementableEvent, Category = "Cutscene")
66 void OnCutsceneLineChanged(const FDT_ScenarioCutsceneTable& CutsceneRow, const FText& SpeakerNameText, const FText& DialogTextValue, const FText& CutscenePathText);
67
68 UFUNCTION(BlueprintImplementableEvent, Category = "Cutscene")
69 void OnCutsceneDialogTextChanged(const FText& DialogTextValue);
70
71 UFUNCTION(BlueprintImplementableEvent, Category = "Cutscene")
72 void OnCutsceneWaitingInput();
73
74 UFUNCTION(BlueprintImplementableEvent, Category = "Cutscene")
75 void OnCutsceneFinished();
76
77private:
78 void ApplyCutsceneLine(const FText& SpeakerNameText, const FText& DialogTextValue, const FText& CutscenePathText);
79 void SetCutsceneImageInternal(const FText& CutscenePathText);
80 void SetDialogTextInternal(const FText& DialogTextValue);
81 bool IsAdvanceInputKey(const FKey& Key) const;
82 void FinishTypingCurrentLine();
83 void ShowCurrentLine();
84 void FinishCutscene();
85
86protected:
87 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "UI|Cutscene", meta = (BindWidget))
88 TObjectPtr<UWidget> DialogBox;
89
90 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "UI|Cutscene", meta = (BindWidget))
91 TObjectPtr<UImage> CutsceneImage;
92
93 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "UI|Cutscene", meta = (BindWidget))
94 TObjectPtr<UTextBlock> SpeakerName;
95
96 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "UI|Cutscene", meta = (BindWidget))
97 TObjectPtr<UTextBlock> DialogText;
98
99 UPROPERTY(Transient)
101
102private:
103 TArray<FDT_ScenarioCutsceneTable> CutsceneRows;
104 int32 CurrentRowIndex = INDEX_NONE;
105 FString CurrentDialogString;
106
107 bool bUseTypewriter = false;
108 float CharactersPerSecond = 40.0f;
109 float TypingProgress = 0.0f;
110};
111
112
113FORCEINLINE void UScenarioCutsceneWidget::SkipCutscene()
114{
115 FinishCutscene();
116}
117
118
119FORCEINLINE void UScenarioCutsceneWidget::ConfigureTypewriter(const bool bInUseTypewriter, const float InCharactersPerSecond)
120{
121 bUseTypewriter = bInUseTypewriter;
122 CharactersPerSecond = FMath::Max(InCharactersPerSecond, 1.0f);
123}
124
125
130
131
136
137
138FORCEINLINE bool UScenarioCutsceneWidget::IsAdvanceInputKey(const FKey& Key) const
139{
140 return Key == EKeys::SpaceBar;
141}
EScenarioCutsceneState
Definition ScenarioCutsceneWidget.h:18
Definition ScenarioCutsceneWidget.h:30
bool bUseTypewriter
Definition ScenarioCutsceneWidget.h:107
EScenarioCutsceneState CutsceneState
Definition ScenarioCutsceneWidget.h:100
float CharactersPerSecond
Definition ScenarioCutsceneWidget.h:108
EScenarioCutsceneState GetCutsceneState() const
Definition ScenarioCutsceneWidget.h:132
bool IsAdvanceInputKey(const FKey &Key) const
Definition ScenarioCutsceneWidget.h:138
bool IsCutsceneFinished() const
Definition ScenarioCutsceneWidget.h:126
void ConfigureTypewriter(bool bInUseTypewriter, float InCharactersPerSecond)
Definition ScenarioCutsceneWidget.h:119
Definition UserWidgetBase.h:33
Definition DT_ScenarioCutsceneTable.h:10