21 PrimaryActorTick.bCanEverTick =
false;
23 RootSceneComp = CreateDefaultSubobject<USceneComponent>(TEXT(
"RootSceneComp"));
26 MeshComp = CreateDefaultSubobject<UStaticMeshComponent>(TEXT(
"MeshComp"));
27 MeshComp->SetupAttachment(RootComponent);
29 InteractableComp = CreateDefaultSubobject<UInteractableComponent>(TEXT(
"Interactable"));
33 BoxComp = CreateDefaultSubobject<UBoxComponent>(TEXT(
"BoxComp"));
34 BoxComp->SetupAttachment(GetRootComponent());
35 BoxComp->SetRelativeLocation(FVector(0, 36, 75));
36 BoxComp->SetBoxExtent(FVector(60, 65, 92));
38 WidgetComp = CreateDefaultSubobject<UWidgetComponent>(TEXT(
"WidgetComp"));
40 if (WidgetRef.Succeeded())
43 WidgetComp->SetupAttachment(GetRootComponent());
44 WidgetComp->SetWidgetSpace(EWidgetSpace::Screen);
45 WidgetComp->SetDrawSize(FVector2D(2048.0f, 1024.0f));
77 PRINTLOG(TEXT(
"[DailyKiosk] Network request failed. Using fallback word data."));
82 if (FallbackWordData.Num() > 0)
84 if (
UPopup_DailyStudy* DailyStudyPopup = UPopupManager::Get(GetWorld())->ShowPopupAs<UPopup_DailyStudy>(EPopupType::DailyStudy))
86 DailyStudyPopup->InitPopup(FallbackWordData);
91 PRINTLOG(TEXT(
"[DailyKiosk] ERROR: No fallback data available!"));
98 TArray<FString> RawTokens;
99 InResponseData.
answer.ParseIntoArray(RawTokens, TEXT(
"|"),
true);
102 TArray<FWordData> ValidWordDataArray;
103 for (int32 i = 0; i + 2 < RawTokens.Num(); i += 3)
105 FString Kor = RawTokens[i].TrimStartAndEnd();
106 FString Eng = RawTokens[i + 1].TrimStartAndEnd();
107 FString Pronunciation = RawTokens[i + 2].TrimStartAndEnd();
110 if (Kor.IsEmpty() || Eng.IsEmpty() || Pronunciation.IsEmpty())
112 PRINTLOG(TEXT(
"[DailyKiosk] Skipped: Empty field (Kor: '%s', Eng: '%s', Phon: '%s')"), *Kor, *Eng, *Pronunciation);
119 PRINTLOG(TEXT(
"[DailyKiosk] Skipped: Invalid Korean word '%s'"), *Kor);
129 ValidWordDataArray.Add(WordData);
130 PRINTLOG(TEXT(
"[DailyKiosk] Parsed Word: Kor='%s', Eng='%s', Phon='%s'"), *Kor, *Eng, *Pronunciation);
139 ValidWordDataArray.Append(AdditionalWordData);
143 if (ValidWordDataArray.Num() > 0)
145 if (
UPopup_DailyStudy* DailyStudyPopup = UPopupManager::Get(GetWorld())->ShowPopupAs<UPopup_DailyStudy>(EPopupType::DailyStudy))
147 DailyStudyPopup->InitPopup(ValidWordDataArray);
148 PRINTLOG(TEXT(
"[DailyKiosk] Initialized DailyStudy popup with %d words"), ValidWordDataArray.Num());
153 PRINTLOG(TEXT(
"[DailyKiosk] ERROR: No valid word data!"));
167 TArray<FWordData> RandomWordDataArray;
172 PRINTLOG(TEXT(
"[DailyKiosk] Error: GameDataManager not found"));
173 return RandomWordDataArray;
179 if (AllKeys.Num() == 0)
181 PRINTLOG(TEXT(
"[DailyKiosk] Error: No ReadData available"));
182 return RandomWordDataArray;
186 int32 WordsToGenerate = FMath::Min(Count, AllKeys.Num());
188 for (int32 i = 0; i < WordsToGenerate; ++i)
191 int32 RandomIndex = FMath::RandRange(0, AllKeys.Num() - 1);
192 int32 RandomKey = AllKeys[RandomIndex];
193 AllKeys.RemoveAt(RandomIndex);
202 WordData.
Eng = ReadData.
Eng;
205 RandomWordDataArray.Add(WordData);
209 PRINTLOG(TEXT(
"[DailyKiosk] Generated %d random word data from ReadData"), RandomWordDataArray.Num());
210 return RandomWordDataArray;