KLingo Project Documentation 1.0.0
Unreal Engine 5.6 C++ Project Documentation
로딩중...
검색중...
일치하는것 없음
APlayerControl.h
이 파일의 문서화 페이지로 가기
1// Copyright (c) 2025 Doppleddiggong. All rights reserved. Unauthorized copying, modification, or distribution of this file, via any medium is strictly prohibited. Proprietary and confidential.
2
7#pragma once
8
9#include "CoreMinimal.h"
10#include "ALingoGameState.h"
11#include "ALingoPlayerState.h"
12#include "NetworkData.h"
13#include "InputActionValue.h"
14#include "GameFramework/PlayerController.h"
15#include "APlayerControl.generated.h"
16
17UCLASS(Blueprintable, BlueprintType, ClassGroup=(Dopple))
18class ONEPIECE_API APlayerControl : public APlayerController
19{
20 GENERATED_BODY()
21
22public:
24
25 void UpdateQuestRole(EQuestRole QuestRole);
26
27 // --- User Info (레벨 전환에서 유지됨) ---
28
29 bool HasUserInfo() const { return GetUserId() > 0; }
30 FString GetUserName() const { return UserInfo.username; }
31 int32 GetUserId() const { return UserInfo.id; }
32 const FResponseUserMe& GetUserInfo() const { return UserInfo; }
33
34
35public:
36 UFUNCTION(Client, Reliable)
37 void Client_ToastMessage(const FString& Message);
38
40 UFUNCTION(Client, Reliable)
41 void Client_UpdateSpeakQuest(int32 StepIndex);
42
44 UFUNCTION(Client, Reliable)
45 void Client_EndSpeakQuest();
46
47 UFUNCTION(Client, Reliable)
48 void Client_InteractKiosk();
49
52 UFUNCTION(Client, Reliable)
53 void Client_RequestSpeakScenario(class AWheatly* Wheatly);
54
58 UFUNCTION(Server, Reliable)
59 void Server_SyncSpeakScenarioData(class AWheatly* Wheatly, const struct FResponseSpeakScenario& Data);
60
64 UFUNCTION(Server, Reliable)
65 void Server_SendDoorMessage(int32 InDoorIndex, bool bOpen);
66
67protected:
68 virtual void BeginPlay() override;
69 virtual void SetupInputComponent() override;
70
72 UFUNCTION()
73 void OnDoorMessage(int32 InDoorIndex, bool bInOpen, AActor* EventInstigator);
74
75 // --- Input Assets ---
76 UPROPERTY(EditDefaultsOnly, Category="Input")
77 TObjectPtr<class UInputMappingContext> IMC_Default;
78
79 UPROPERTY(EditDefaultsOnly, Category="Input") TObjectPtr<class UInputAction> IA_Move;
80 UPROPERTY(EditDefaultsOnly, Category="Input") TObjectPtr<class UInputAction> IA_Look;
81 UPROPERTY(EditDefaultsOnly, Category="Input") TObjectPtr<class UInputAction> IA_Jump;
82 UPROPERTY(EditDefaultsOnly, Category="Input") TObjectPtr<class UInputAction> IA_Record;
83 UPROPERTY(EditDefaultsOnly, Category="Input") TObjectPtr<class UInputAction> IA_Grab;
84 UPROPERTY(EditDefaultsOnly, Category="Input") TObjectPtr<class UInputAction> IA_Interact;
85 UPROPERTY(EditDefaultsOnly, Category="Input") TObjectPtr<class UInputAction> IA_Run;
86 UPROPERTY(EditDefaultsOnly, Category="Input") TObjectPtr<class UInputAction> IA_Info;
87 UPROPERTY(EditDefaultsOnly, Category="Input") TObjectPtr<class UInputAction> IA_Hook;
88 UPROPERTY(EditDefaultsOnly, Category="Input") TObjectPtr<class UInputAction> IA_Chat;
89 UPROPERTY(EditDefaultsOnly, Category="Input") TObjectPtr<class UInputAction> IA_History;
90 UPROPERTY(EditDefaultsOnly, Category="Input") TObjectPtr<class UInputAction> IA_HowToCtrl;
91 UPROPERTY(EditDefaultsOnly, Category="Input") TObjectPtr<class UInputAction> IA_HowToPlay;
92
93 // --- Handlers ---
94 void OnMove(const FInputActionValue& Value);
95 void OnLook(const FInputActionValue& Value);
96
97 void OnStopMove(const FInputActionValue& Value);
98 void OnJump(const FInputActionValue& Value);
99 void OnRun(const FInputActionValue& Value);
100
101 void OnRecordPressed(const FInputActionValue& Value);
102 void OnRecordReleased(const FInputActionValue& Value);
103
104 void OnGrab(const FInputActionValue& Value);
105 void OnGrabRelease(const FInputActionValue& Value);
106
107 void OnInteract(const FInputActionValue& Value);
108
109 void OnInfo(const FInputActionValue& Value);
110
111 void OnHook(const FInputActionValue& Value);
112
113 void OnChat(const FInputActionValue& Value);
114
115 void OnHistory(const FInputActionValue& Value);
116
117 void OnHowToCtrl(const FInputActionValue& Value);
118
119 void OnHowToPlay(const FInputActionValue& Value);
120
121 UFUNCTION(Server, Reliable)
122 void Server_OnGrab();
123
124 UFUNCTION(Server, Reliable)
125 void Server_OnGrabRelease();
126
127 UFUNCTION(Server, Reliable)
128 void Server_OnInteract();
129
130 UFUNCTION(Server, Reliable)
131 void Server_OnHook();
132
133 UFUNCTION(Server, Reliable)
134 void Server_RequestDrop();
135
136public:
137 UFUNCTION(Server, Reliable)
138 void Server_SetUserInfo(const FResponseUserMe& InUserInfo);
139
141 UFUNCTION(BlueprintCallable, Category = "Chat")
142 class UChatHistorySystem* GetChatHistorySystem() const { return ChatHistorySystem; }
143
144private:
145 void RequestDrop(APlayerControl* Requester);
146 void UpdateSpeakWidget(int32 StepIndex);
147
148 void RequestSpeakResult();
149 void OnResponseSpeakResult(FResponseSpeakResult& ResponseData, bool bWasSuccessful);
150
151public:
152
153 UFUNCTION(NetMulticast, Reliable)
154 void Multicast_OpenHowToPlay(EQuestType InType);
155
156
157 UFUNCTION(Client, Reliable)
158 void Client_OpenHowToPlay(EQuestType InType);
159
160
161
163 void UpdateQuestInfoWidget();
164
165 void UpdateQuestOrderWidget(const FString& inQuestOrder);
166
167private:
168
169 void TEST_DropperDropProcess();
170 void TEST_AddItemToBoxList();
171
172public:
173 UFUNCTION(Server, Reliable)
174 void ServerRPC_SendChat(const FText& inMessage);
175
178 UFUNCTION(Server, Reliable)
179 void ServerRPC_SendAIQuestion(const FString& Question);
180
181private:
183 void OnChatAnswerReceived(FResponseChatAnswers& ResponseData, bool bWasSuccessful);
184
185private:
186 class IControllable* GetControllable() const;
187
189 UPROPERTY()
191
192public:
193 // Tutorial
194 UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
195 class UTutorialComponent* TutorialComponent;
196
197 bool ShouldSkipTutorial() const;
198 void StartTutorialManually();
199 // 튜토리얼 완료 콜백
200 void OnTutorialCompleted();
201
202private:
203 void OpenHowToPlay(EQuestType QuestType);
204
205public:
207 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Chat", meta = (AllowPrivateAccess = "true"))
208 TObjectPtr<class UChatHistorySystem> ChatHistorySystem;
209};
EQuestType
EQuestRole
Read 퀘스트에서 플레이어의 역할을 정의합니다.
Definition EQuestRole.h:6
네트워크 요청과 응답에 사용되는 구조체 및 설정을 정의합니다.
int32 GetUserId() const
bool HasUserInfo() const
FString GetUserName() const
const FResponseUserMe & GetUserInfo() const
Wheatly NPC 액터
Definition AWheatly.h:31
Chat Answers 응답 구조체입니다.
Speak 시나리오 응답 구조체입니다.