KLingo Project Documentation 1.0.0
Unreal Engine 5.6 C++ Project Documentation
로딩중...
검색중...
일치하는것 없음
UPopup_Word.cpp
이 파일의 문서화 페이지로 가기
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
3
4#include "UPopup_Word.h"
5
6#include "APlayerActor.h"
7#include "GameLogging.h"
8#include "UImageButton.h"
10#include "ULingoGameHelper.h"
11#include "UPopupManager.h"
12#include "UTextureButton.h"
13#include "Components/TextBlock.h"
14
16{
17 Data = InData;
18
19 if (Btn_Ok)
20 {
21 Btn_Ok->OnButtonClickedEvent.RemoveDynamic(this, &UPopup_Word::OnClickClose);
22 Btn_Ok->OnButtonClickedEvent.AddDynamic(this, &UPopup_Word::OnClickClose);
23 }
24
25 if (Btn_Close)
26 {
27 Btn_Close->OnButtonClickedEvent.RemoveDynamic(this, &UPopup_Word::OnClickClose);
28 Btn_Close->OnButtonClickedEvent.AddDynamic(this, &UPopup_Word::OnClickClose);
29 }
30
31 if (Btn_Repeat)
32 {
33 Btn_Repeat->OnButtonClickedEvent.RemoveDynamic(this, &UPopup_Word::OnClickRepeat);
34 Btn_Repeat->OnButtonClickedEvent.AddDynamic(this, &UPopup_Word::OnClickRepeat);
35 }
36
37 Txt_Kor->SetText( FText::FromString(InData.Kor));
38 Txt_Proneme->SetText( FText::FromString(InData.Pronunciation));
39
41}
42
44{
45 if (UPopupManager* PopupMgr = UPopupManager::Get(GetWorld()))
46 {
47 PopupMgr->HideCurrentPopup();
48 }
49}
50
52{
53 if (bIsRequest)
54 {
55 PRINTLOG(TEXT("[Popup_Word] Already requesting audio, ignoring click: %s"), *Data.Kor);
56 return;
57 }
58
60
61 if (auto KLingoNetwork = UKLingoNetworkSystem::Get(GetWorld()))
62 {
63 bIsRequest = true;
64
65 KLingoNetwork->RequestListenAudio(
66 Data.Kor,
67 FResponseListenAudioDelegate::CreateUObject(this, &UPopup_Word::OnResponseListenAudio)
68 );
69 }
70}
71
72void UPopup_Word::OnResponseListenAudio(FResponseListenAudio& ResponseData, bool bWasSuccessful)
73{
74 bIsRequest = false;
75
76 if (bWasSuccessful)
77 {
78 if (auto PlayerActor = ULingoGameHelper::GetPlayerActor(this))
79 PlayerActor->PlayTTSAudio(ResponseData.audio_base64);
80 }
81 else
82 {
83 PRINTLOG(TEXT("Audio request failed: %s"), *LastRequestText);
84 }
85}
86
Declares the player-controlled character actor.
YiSan 전반에서 사용하는 공용 인터페이스를 선언합니다.
#define PRINTLOG(fmt,...)
Definition GameLogging.h:30
KLingo API 요청을 담당하는 서브시스템을 선언합니다.
static class APlayerActor * GetPlayerActor(const UObject *WorldContextObject)
첫 번째 플레이어의 PlayerActor를 가져옵니다.
팝업 관리자
TObjectPtr< class UImageButton > Btn_Ok
Definition UPopup_Word.h:40
FPhonemeData Data
Definition UPopup_Word.h:46
void OnResponseListenAudio(FResponseListenAudio &ResponseData, bool bWasSuccessful)
TObjectPtr< class UTextureButton > Btn_Repeat
Definition UPopup_Word.h:37
FString LastRequestText
현재 요청 중인 오디오 텍스트 (응답 검증용)
Definition UPopup_Word.h:52
void InitPopup(const FPhonemeData &InData)
TObjectPtr< class UTextBlock > Txt_Kor
Definition UPopup_Word.h:31
void OnClickClose()
TObjectPtr< class UTextureButton > Btn_Close
Definition UPopup_Word.h:43
TObjectPtr< class UTextBlock > Txt_Proneme
Definition UPopup_Word.h:34
void OnClickRepeat()
bool bIsRequest
오디오 요청 중복 방지 플래그
Definition UPopup_Word.h:49
단어 데이터 구조체입니다.
FString Pronunciation
TArray< uint8 > audio_base64