KLingo Project Documentation 1.0.0
Unreal Engine 5.6 C++ Project Documentation
로딩중...
검색중...
일치하는것 없음
AOrderKiosk 클래스 참조

#include <OrderKiosk.h>

+ AOrderKiosk에 대한 상속 다이어그램 :
+ AOrderKiosk에 대한 협력 다이어그램:

Public 멤버 함수

 AOrderKiosk ()
 
void BeginFoodOverlap (UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult &SweepResult)
 
void BeginSubmitOverlap (UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult &SweepResult)
 
ECompassMarkerType GetCompassMarkerType ()
 
virtual void SetShowOnCompass (bool bShow)
 
virtual bool ShouldShowOnCompass () const
 
virtual void Tick (float DeltaTime) override
 

Public 속성

bool bShowOnCompass = true
 
class UBoxComponent * FoodCollision
 
bool IsOnceStopped = false
 
ECompassMarkerType MarkerType
 
class UBoxComponent * SubmitCollision
 
TObjectPtr< class ATeleportOutTeleportOut
 

Protected 멤버 함수

virtual void BeginPlay () override
 
void Server_DestroyListenAnswer (AActor *ActorToDestroy)
 
void Server_MoveFoodContainer (AActor *ActorToMove)
 
virtual void SetCompassMarkerInto (ECompassMarkerType InMarkerType) override
 

Protected 속성

class ACityNameCityDisplay
 
TArray< AActor * > ConveyorsToControl
 
class AFoodCurrentFoodContainer
 
class ACityNameFoodDisplay
 
EAnswerType InAnswerType = EAnswerType::None
 

상세한 설명

OrderKiosk.h 파일의 18 번째 라인에서 정의되었습니다.

생성자 & 소멸자 문서화

◆ AOrderKiosk()

AOrderKiosk::AOrderKiosk ( )

OrderKiosk.cpp 파일의 18 번째 라인에서 정의되었습니다.

19{
20 // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
21 PrimaryActorTick.bCanEverTick = true;
22 bReplicates = true;
23
24 FoodCollision = CreateDefaultSubobject<UBoxComponent>(TEXT("FoodCollision"));
25 SetRootComponent(FoodCollision);
26
27 SubmitCollision = CreateDefaultSubobject<UBoxComponent>(TEXT("SubmitCollision"));
28 SubmitCollision->SetupAttachment(GetRootComponent());
29
31}
class UBoxComponent * SubmitCollision
Definition OrderKiosk.h:41
class UBoxComponent * FoodCollision
Definition OrderKiosk.h:38

다음을 참조함 : FoodCollision, ICompassTargetInterface::MarkerType, QuestEnd, SubmitCollision.

멤버 함수 문서화

◆ BeginFoodOverlap()

void AOrderKiosk::BeginFoodOverlap ( UPrimitiveComponent *  OverlappedComponent,
AActor *  OtherActor,
UPrimitiveComponent *  OtherComp,
int32  OtherBodyIndex,
bool  bFromSweep,
const FHitResult &  SweepResult 
)

OrderKiosk.cpp 파일의 59 번째 라인에서 정의되었습니다.

61{
62 UE_LOG(LogTemp, Warning, TEXT("[OrderKiosk::BeginFoodOverlap] IsOnceStopped: %d"), IsOnceStopped);
63
64 if (IsOnceStopped) return;
65
66 if (AFood* Temp = Cast<AFood>(OtherActor))
67 {
70
71 UE_LOG(LogTemp, Warning, TEXT("[OrderKiosk::BeginFoodOverlap] Food detected. InAnswerType: %d, City=%s, Food=%s"),
72 InAnswerType, *CurrentData.word1.name, *CurrentData.word2.name);
73
74 // 이미 정답 데이터가 있으면 컨베이어 계속 움직임
75 if (InAnswerType == EAnswerType::Food && CurrentData.word2.name != TEXT("")) return;
76
77 // City가 이미 있는 경우 (부분정답), 바로 3초 후 이동 타이머 설정
78 if (InAnswerType == EAnswerType::City && CurrentData.word1.name != TEXT(""))
79 {
80 UE_LOG(LogTemp, Warning, TEXT("[OrderKiosk::BeginFoodOverlap] City already set - Setting timer for teleport"));
81
82 FTimerHandle TimerHandle;
83 GetWorldTimerManager().SetTimer(TimerHandle, FTimerDelegate::CreateLambda([this]
84 {
85 UE_LOG(LogTemp, Warning, TEXT("[OrderKiosk] Timer triggered - Moving FoodContainer (from BeginFoodOverlap)"));
87 }), 3.f, false);
88
89 return;
90 }
91
92 // 아직 설정 안 됐으면 컨베이어 멈추기
93 if (ConveyorsToControl.Num() <= 0) return;
94
95 UE_LOG(LogTemp, Warning, TEXT("[OrderKiosk::BeginFoodOverlap] Stopping conveyor"));
96
97 for (auto Conveyor : ConveyorsToControl)
98 {
99 if (AConveyorBelt* CB = Cast<AConveyorBelt>(Conveyor))
100 {
101 CB->ChangeConveyorSpeed(0.f);
102 }
103 }
104 }
105}
Definition Food.h:37
FFoodCapsuleData CurrentFoodData
Definition Food.h:77
EAnswerType InAnswerType
Definition OrderKiosk.h:62
class AFood * CurrentFoodContainer
Definition OrderKiosk.h:59
bool IsOnceStopped
Definition OrderKiosk.h:54
void Server_MoveFoodContainer(AActor *ActorToMove)
TArray< AActor * > ConveyorsToControl
Definition OrderKiosk.h:67
FWordInfo word1
시나리오 단어 정보
Definition Food.h:22
FWordInfo word2
Definition Food.h:25
FString name

다음을 참조함 : City, ConveyorsToControl, CurrentFoodContainer, AFood::CurrentFoodData, Food, InAnswerType, IsOnceStopped, FWordInfo::name, Server_MoveFoodContainer(), FFoodCapsuleData::word1, FFoodCapsuleData::word2.

다음에 의해서 참조됨 : BeginPlay().

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ BeginPlay()

void AOrderKiosk::BeginPlay ( )
overrideprotectedvirtual

OrderKiosk.cpp 파일의 34 번째 라인에서 정의되었습니다.

35{
36 Super::BeginPlay();
37
38 FoodCollision->OnComponentBeginOverlap.AddDynamic(this, &AOrderKiosk::BeginFoodOverlap);
39 SubmitCollision->OnComponentBeginOverlap.AddDynamic(this, &AOrderKiosk::BeginSubmitOverlap);
40
41 TArray<AActor*> CityNames;
42 UGameplayStatics::GetAllActorsOfClass(GetWorld(), ACityName::StaticClass(), CityNames);
43 for (AActor* Actor : CityNames)
44 {
45 if (ACityName* CN = Cast<ACityName>(Actor))
46 {
47 if (CN->Index == 0) FoodDisplay = CN;
48 else if (CN->Index == 1) CityDisplay = CN;
49 }
50 }
51}
class ACityName * CityDisplay
Definition OrderKiosk.h:77
class ACityName * FoodDisplay
Definition OrderKiosk.h:76
void BeginFoodOverlap(UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult &SweepResult)
void BeginSubmitOverlap(UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult &SweepResult)

다음을 참조함 : BeginFoodOverlap(), BeginSubmitOverlap(), CityDisplay, FoodCollision, FoodDisplay, SubmitCollision.

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ BeginSubmitOverlap()

void AOrderKiosk::BeginSubmitOverlap ( UPrimitiveComponent *  OverlappedComponent,
AActor *  OtherActor,
UPrimitiveComponent *  OtherComp,
int32  OtherBodyIndex,
bool  bFromSweep,
const FHitResult &  SweepResult 
)

OrderKiosk.cpp 파일의 107 번째 라인에서 정의되었습니다.

109{
110 // 답 제출하면 컨베이어 재개
111 if (AListenAnswer* Answer = Cast<AListenAnswer>(OtherActor))
112 {
113 UE_LOG(LogTemp, Warning, TEXT("[OrderKiosk::BeginSubmitOverlap] ListenAnswer detected. AnswerType: %d, Index: %d"),
114 Answer->AnswerData.AnswerType, InAnswerType);
115
116 if (ConveyorsToControl.Num() <= 0) return;
117
118 for (auto Conveyor : ConveyorsToControl)
119 {
120 if (AConveyorBelt* CB = Cast<AConveyorBelt>(Conveyor))
121 {
122 if (!CurrentFoodContainer) return;
123
124 // 인덱스 번호와 정답 타입이 일치하면 데이터 전달 후 컨베이어 움직이기
125 if (Answer->AnswerData.AnswerType == InAnswerType)
126 {
127 UE_LOG(LogTemp, Warning, TEXT("[OrderKiosk::BeginSubmitOverlap] AnswerType matched. InAnswerType: %d"), InAnswerType);
128
129 switch (InAnswerType)
130 {
132 CurrentFoodContainer->SetFoodMesh(Answer->AnswerData.word1, Answer->Mesh->GetStaticMesh());
135 break;
136
138 {
139 UE_LOG(LogTemp, Warning, TEXT("[OrderKiosk::BeginSubmitOverlap] City case - Setting timer for teleport"));
140
141 CurrentFoodContainer->SetCityName(Answer->AnswerData.word1);
143
144 // 3초 뒤 정답 구간으로 이동
145 FTimerHandle TimerHandle;
146 GetWorldTimerManager().SetTimer(TimerHandle, FTimerDelegate::CreateLambda([this]
147 {
148 UE_LOG(LogTemp, Warning, TEXT("[OrderKiosk] Timer triggered - Moving FoodContainer"));
150
151 }), 3.f, false);
152
153 break;
154 }
155
156 default:
157 break;
158 }
159
160 CB->ChangeConveyorSpeed(200.f);
161
163 //CurrentFoodContainer = nullptr;
164 }
165 }
166 }
167
168 IsOnceStopped = true;
169 }
170 else
171 {
172 UE_LOG(LogTemp, Warning, TEXT("[OrderKiosk::BeginSubmitOverlap] OtherActor is not a ListenAnswer"));
173 }
174}
void SetChecked()
Definition CityName.cpp:57
void UpdateFoodWidget()
Widget에 음식 이름 업데이트
Definition Food.cpp:100
void SetFoodMesh(FWordInfo InWord, UStaticMesh *InMesh)
Definition Food.cpp:167
void SetCityName(FWordInfo InWord)
Definition Food.cpp:84
void Server_DestroyListenAnswer(AActor *ActorToDestroy)

다음을 참조함 : City, CityDisplay, ConveyorsToControl, CurrentFoodContainer, Food, FoodDisplay, InAnswerType, IsOnceStopped, Server_DestroyListenAnswer(), Server_MoveFoodContainer(), ACityName::SetChecked(), AFood::SetCityName(), AFood::SetFoodMesh(), AFood::UpdateFoodWidget().

다음에 의해서 참조됨 : BeginPlay().

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetCompassMarkerType()

ECompassMarkerType ICompassTargetInterface::GetCompassMarkerType ( )
inlineinherited

CompassTargetInterface.h 파일의 29 번째 라인에서 정의되었습니다.

29{return MarkerType;}

다음에 의해서 참조됨 : APlayerActor::UpdateCompassMarkers().

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ Server_DestroyListenAnswer()

void AOrderKiosk::Server_DestroyListenAnswer ( AActor *  ActorToDestroy)
protected

다음에 의해서 참조됨 : BeginSubmitOverlap().

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ Server_MoveFoodContainer()

void AOrderKiosk::Server_MoveFoodContainer ( AActor *  ActorToMove)
protected

다음에 의해서 참조됨 : BeginFoodOverlap(), BeginSubmitOverlap().

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ SetCompassMarkerInto()

void AOrderKiosk::SetCompassMarkerInto ( ECompassMarkerType  InMarkerType)
overrideprotectedvirtual

ICompassTargetInterface(으)로부터 재구현되었습니다.

OrderKiosk.cpp 파일의 176 번째 라인에서 정의되었습니다.

177{
178 MarkerType = InMarkerType;
179}

다음을 참조함 : ICompassTargetInterface::MarkerType.

◆ SetShowOnCompass()

virtual void ICompassTargetInterface::SetShowOnCompass ( bool  bShow)
inlinevirtualinherited

CompassTargetInterface.h 파일의 33 번째 라인에서 정의되었습니다.

◆ ShouldShowOnCompass()

virtual bool ICompassTargetInterface::ShouldShowOnCompass ( ) const
inlinevirtualinherited

CompassTargetInterface.h 파일의 32 번째 라인에서 정의되었습니다.

32{return bShowOnCompass;}

다음에 의해서 참조됨 : APlayerActor::UpdateCompassMarkers().

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ Tick()

void AOrderKiosk::Tick ( float  DeltaTime)
overridevirtual

OrderKiosk.cpp 파일의 54 번째 라인에서 정의되었습니다.

55{
56 Super::Tick(DeltaTime);
57}

멤버 데이터 문서화

◆ bShowOnCompass

bool ICompassTargetInterface::bShowOnCompass = true
inherited

CompassTargetInterface.h 파일의 27 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : APlayerActor::APlayerActor().

◆ CityDisplay

class ACityName* AOrderKiosk::CityDisplay
protected

OrderKiosk.h 파일의 77 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : BeginPlay(), BeginSubmitOverlap().

◆ ConveyorsToControl

TArray<AActor*> AOrderKiosk::ConveyorsToControl
protected

OrderKiosk.h 파일의 67 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : BeginFoodOverlap(), BeginSubmitOverlap().

◆ CurrentFoodContainer

class AFood* AOrderKiosk::CurrentFoodContainer
protected

OrderKiosk.h 파일의 59 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : BeginFoodOverlap(), BeginSubmitOverlap().

◆ FoodCollision

class UBoxComponent* AOrderKiosk::FoodCollision

OrderKiosk.h 파일의 38 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : AOrderKiosk(), BeginPlay().

◆ FoodDisplay

class ACityName* AOrderKiosk::FoodDisplay
protected

OrderKiosk.h 파일의 76 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : BeginPlay(), BeginSubmitOverlap().

◆ InAnswerType

EAnswerType AOrderKiosk::InAnswerType = EAnswerType::None
protected

OrderKiosk.h 파일의 62 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : BeginFoodOverlap(), BeginSubmitOverlap().

◆ IsOnceStopped

bool AOrderKiosk::IsOnceStopped = false

OrderKiosk.h 파일의 54 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : BeginFoodOverlap(), BeginSubmitOverlap().

◆ MarkerType

◆ SubmitCollision

class UBoxComponent* AOrderKiosk::SubmitCollision

OrderKiosk.h 파일의 41 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : AOrderKiosk(), BeginPlay().

◆ TeleportOut

TObjectPtr<class ATeleportOut> AOrderKiosk::TeleportOut

OrderKiosk.h 파일의 50 번째 라인에서 정의되었습니다.


이 클래스에 대한 문서화 페이지는 다음의 파일들로부터 생성되었습니다.: