15#include "Kismet/GameplayStatics.h"
21 return FDateTime::UtcNow().ToUnixTimestamp();
27 return PC->GetUserId();
33 ALingoGameState* GS = Cast<ALingoGameState>(UGameplayStatics::GetGameState(WorldContextObject));
34 int32 NumPlayers = GS ? GS->PlayerArray.Num() : 0;
45 return WorldContextObject->GetWorld()->GetAuthGameMode<
ALingoGameMode>();
50 return Cast<ALingoGameState>(UGameplayStatics::GetGameState(WorldContextObject));
55 if (!WorldContextObject)
58 UWorld* World = WorldContextObject->GetWorld();
62 APlayerController* PC = World->GetFirstPlayerController();
66 return Cast<ALingoPlayerState>(PC->PlayerState);
84 TArray<ALingoPlayerState*> PlayerStateList;
85 for (FConstPlayerControllerIterator It = WorldContextObject->GetWorld()->GetPlayerControllerIterator(); It; ++It)
87 if (APlayerController* PC = It->Get())
91 PlayerStateList.Add(PS);
96 return PlayerStateList;
101 const UWorld* World = WorldContextObject->GetWorld();
105 const APlayerController* PC = World->GetFirstPlayerController();
109 const APawn* Pawn = PC->GetPawn();
110 return Pawn && Pawn->IsLocallyControlled();
115 if (
const UWorld* World = WorldContextObject->GetWorld())
117 if (APlayerController* PC = World->GetFirstPlayerController())
119 APawn* Pawn = PC->GetPawn();
120 if (Pawn && Pawn->IsLocallyControlled())
138 default:
return "GameStart";
151 default:
return "GameEnd";
178 else if (
Score >= 80.0f)
180 else if (
Score >= 70.0f)
182 else if (
Score >= 60.0f)
211 const int32 TotalMilliseconds = FMath::FloorToInt(InRemainTime * 1000.f);
213 const int32 Minutes = TotalMilliseconds / 60000;
214 const int32 Seconds = (TotalMilliseconds / 1000) % 60;
215 const int32 Milliseconds = (TotalMilliseconds % 1000) / 10;
218 return FString::Printf(TEXT(
"%02d:%02d.%02d"), Minutes, Seconds, Milliseconds);
223 if (!WorldContextObject)
226 UWorld* World = WorldContextObject->GetWorld();
230 APlayerController* PC = World->GetFirstPlayerController();
234 PC->bShowMouseCursor =
true;
235 PC->SetInputMode(FInputModeGameAndUI());
240 if (!WorldContextObject)
243 UWorld* World = WorldContextObject->GetWorld();
247 APlayerController* PC = World->GetFirstPlayerController();
251 PC->bShowMouseCursor =
false;
252 PC->SetInputMode(FInputModeGameOnly());
257 if (!WorldContextObject)
260 UWorld* World = WorldContextObject->GetWorld();
264 APlayerController* PC = World->GetFirstPlayerController();
268 return Cast<APlayerActor>(PC->GetPawn());
274 if (!WorldContextObject)
277 UWorld* World = WorldContextObject->GetWorld();
281 return Cast<APlayerControl>(World->GetFirstPlayerController());
286 if (!WorldContextObject)
289 UWorld* World = WorldContextObject->GetWorld();
293 return Cast<ASpeakStageActor>(UGameplayStatics::GetActorOfClass(World, ASpeakStageActor::StaticClass()));
298 if (!WorldContextObject)
301 UWorld* World = WorldContextObject->GetWorld();
305 return Cast<AWheatly>(UGameplayStatics::GetActorOfClass(World, AWheatly::StaticClass()));
314 if (APlayerController* PC = Cast<APlayerController>(PlayerState->GetOwner()))
318 FString UserName = PlayerControl->GetUserName();
319 if (!UserName.IsEmpty())
325 return PlayerState->GetPlayerName();
330 if (InTimeTaken <= 300)
332 else if (InTimeTaken <= 240)
334 else if (InTimeTaken <= 180)
342 if (InScore >= 90.0f)
345 return FLinearColor::Green;
347 else if (InScore >= 80.0f)
350 return FLinearColor(0.56f, 1.0f, 0.56f, 1.0f);
352 else if (InScore >= 60.0f)
355 return FLinearColor::Yellow;
357 else if (InScore >= 40.0f)
360 return FLinearColor(1.0f, 0.5f, 0.0f, 1.0f);
365 return FLinearColor::Red;
372 InScore = FMath::Clamp(InScore, 0.0f, 100.0f);
374 if (InScore >= 90.0f)
379 else if (InScore >= 80.0f)
384 else if (InScore >= 60.0f)
389 else if (InScore >= 40.0f)
405 const float Percentage = ((10.f - WrongCnt) / 10.f) * 100.f;
406 const int32 RoundedPercentage = FMath::RoundToInt(Percentage);
409 return FString::Printf(TEXT(
"%d%%"), RoundedPercentage);
Declares the player-controlled character actor.
APlayerControl 선언에 대한 Doxygen 주석을 제공합니다.
Main character driven directly by the player.
static int32 GetUserId(const UObject *WorldContextObject)
static class APlayerControl * GetPlayerControl(const UObject *WorldContextObject)
static FLinearColor GetRankColor(float InScore)
static int64 GetUnixTimestampInt64()
static class ALingoPlayerState * GetLingoPlayerStateByPC(const AController *PC)
static EResourceTextureType ConvertGradeScore(const float Score)
static int GetMultiPlayerCount(const UObject *WorldContextObject)
static int32 GetStageTypeIndex(const EQuestType QuestType)
static FString GetAccuracyPercentage(int WrongCnt)
static EResourceTextureType ConvertScenarioTexture(EScenarioType ScenarioType)
static void HideMouseCursor(const UObject *WorldContextObject)
마우스 커서를 숨기고 게임 전용 입력 모드로 설정합니다.
static bool IsLocalPlayerPawn(const UObject *WorldContextObject)
static FString GetStageStartMessage(const EQuestType QuestType)
static class ALingoPlayerState * GetLingoPlayerState(const UObject *WorldContextObject)
static FString GetFormatTimer(const float InRemainTime)
static FString GetPlayerNameFromState(const class ALingoPlayerState *PlayerState)
PlayerState에서 PlayerControl을 통해 사용자 이름 가져오기
static class ASpeakStageActor * GetSpeakStageActor(const UObject *WorldContextObject)
static class ALingoGameMode * GetLingoGameMode(const UObject *WorldContextObject)
static EResourceTextureType ConvertGradeString(const FString &Grade)
static float GetMissionPlayTime()
static TArray< class ALingoPlayerState * > GetLingoPlayerStateList(const UObject *WorldContextObject)
static EColorStyleType GetRankColorType(float InScore)
static APawn * GetLocalPawn(const UObject *WorldContextObject)
static class ALingoGameState * GetLingoGameState(const UObject *WorldContextObject)
static bool IsMultiPlay(const UObject *WorldContextObject)
static class AWheatly * GetWheatly(const UObject *WorldContextObject)
static FString GetTimeRank(float InTimeTaken)
static class APlayerActor * GetPlayerActor(const UObject *WorldContextObject)
첫 번째 플레이어의 PlayerActor를 가져옵니다.
static FString GetStageEndMessage(const EQuestType QuestType)
static void ShowMouseCursor(const UObject *WorldContextObject)
마우스 커서를 표시하고 게임+UI 입력 모드로 설정합니다.
static const FString ListenStageStart
static const FString ReadStageEnd
static const FString ReadStageStart
static const FString WriteStageEnd
static const FString WriteStageStart
static const FString SpeakStageStart
static const FString ListenStageEnd
static const FString SpeakStageEnd