8#include "Input/Reply.h"
25#include "Engine/World.h"
26#include "Components/Image.h"
27#include "Components/WidgetSwitcher.h"
28#include "Engine/Texture2D.h"
29#include "GameFramework/PlayerState.h"
30#include "GameFramework/PlayerController.h"
32#define AIM_TEXTURE_PATH TEXT("/Game/CustomContents/UI/UITexture/HookAim.HookAim")
33#define NO_AIM_TEXTURE_PATH TEXT("/Game/CustomContents/UI/UITexture/NoHookAim.NoHookAim")
37 static ConstructorHelpers::FObjectFinder<UTexture2D> AimTextureFinder(
AIM_TEXTURE_PATH);
38 if (AimTextureFinder.Succeeded())
41 static ConstructorHelpers::FObjectFinder<UTexture2D> NoAimTextureFinder(
NO_AIM_TEXTURE_PATH);
42 if (NoAimTextureFinder.Succeeded())
48 Super::NativeConstruct();
51 if (UWorld* World = GetWorld())
54 if (
auto BM = UBroadcastManager::Get(GetWorld()))
58 StateWidget->SetVisibility( ESlateVisibility::Collapsed);
61 RoomWidget->SetVisibility( ESlateVisibility::Collapsed);
80 Super::NativeTick(MyGeometry, InDeltaTime);
87 PlayTimer->SetVisibility(bIsActive ? ESlateVisibility::Visible : ESlateVisibility::Hidden);
95 StateWidget->SetVisibility(ESlateVisibility::Visible);
104 RoomWidget->SetVisibility(ESlateVisibility::Visible);
105 RoomWidget->UpdateRoomInfo(InRoomLevel, InRoomId);
111 ChatWidget->SendMessage(sendUser, inMessage, PlayerIndex);
131 if (UWorld* World = GetWorld())
146 HookTargetIndicator->SetVisibility(bIsActive ? ESlateVisibility::Visible : ESlateVisibility::Collapsed);
173 const bool bCanShow =
178 SpeakWidget->UpdateSpeakStage(SpeakStage, LocalPlayerState, StepIndex);
191 APlayerController* LocalPC = GetWorld()->GetFirstPlayerController();
196 if (!OutLocalPlayerState)
199 return (OutLocalPlayerState == CurrentSpeaker);
204 ChatWidget->SetVisibility(ESlateVisibility::Visible);
211 PRINTLOG(TEXT(
"UMainWidget::FadeOut - FadeWidget is null"));
222 PRINTLOG(TEXT(
"UMainWidget::FadeIn - FadeWidget is null"));
YiSan 전반에서 사용하는 공용 인터페이스를 선언합니다.
#define PRINTLOG(fmt,...)
#define NO_AIM_TEXTURE_PATH
void UpdateRemainMissionTime(const float InTimeLimit)
FORCEINLINE class ALingoPlayerState * GetCurrentSpeaker() const
static class ASpeakStageActor * GetSpeakStageActor(const UObject *WorldContextObject)
void OnUpdateMissionTimerState(bool bIsActive, float TimeLimit)
미션 타이머 상태 변경 핸들러
TObjectPtr< class UCompassWidget > CompassWidget
@breif Compass
void SendChatMessage(FResponseUserMe sendUser, const FText &inMessage, int32 PlayerIndex)
TObjectPtr< class UPlayTimer > PlayTimer
플레이 타이머 위젯 (BindWidget)
TObjectPtr< class UChatWidget > ChatWidget
@breif Chat Widget
void FadeOut(float Duration=0.5f)
페이드 아웃 효과 시작 (화면이 어두워짐)
TObjectPtr< class UImage > HookTargetIndicator
훅 가능 대상 표시 위젯 (옵션, BindWidgetOptional)
void UpdateHookState(bool bIsAiming)
훅 인디케이터 상태 업데이트 (에임/비에임)
virtual void NativeTick(const FGeometry &MyGeometry, float InDeltaTime) override
매 프레임 호출되어 타이머를 업데이트합니다.
TObjectPtr< class UWidgetSwitcher > WidgetSwitcher
void UpdateSpeakWidget(int32 StepIndex)
TObjectPtr< class UTexture2D > HookNoAimTexture
훅 타겟 미감지 시 이미지 (회색)
void SetMissionTimerState(bool bIsActive) const
TObjectPtr< class UQuestInfoWidget > QuestInfoWidget
void UpdateStateWidget(int32 UserId, const FString &UserName)
void UpdateTimerDisplay() const
타이머 텍스트를 업데이트합니다.
void FadeIn(float Duration=0.5f)
페이드 인 효과 시작 (화면이 밝아짐)
TObjectPtr< class ALingoGameState > CachedGameState
GameState 참조 캐싱
TObjectPtr< class UFadeWidget > FadeWidget
페이드 인/아웃 위젯 (옵션, BindWidgetOptional)
bool CanShowSpeakWidget(ASpeakStageActor *&OutSpeakStage, ALingoPlayerState *&OutLocalPlayerState) const
void UpdateRoomWidget(int32 InRoomLevel, int64 InRoomId)
virtual void NativeConstruct() override
위젯 초기화
UMainWidget(const FObjectInitializer &ObjectInitializer)
TObjectPtr< class UTexture2D > HookAimTexture
훅 타겟 감지 시 이미지 (파란색)
TObjectPtr< class UVoiceRecording > VoiceRecording
TObjectPtr< class USpeakWidget > SpeakWidget
Speak Stage UI 위젯 (옵션, BindWidgetOptional)
TObjectPtr< class URoomWidget > RoomWidget
TObjectPtr< class UStateWidget > StateWidget