Optimizing WB_GameWidget

This commit is contained in:
martinluckyrobots
2025-04-10 13:30:13 +08:00
parent 55fabb31e8
commit d188cb846e
15 changed files with 99 additions and 39 deletions

View File

@ -344,6 +344,41 @@ void ULuckyRobotsGameInstance::GetMessageParse(FString Json)
}
}
FParsedData ULuckyRobotsGameInstance::DoJsonParse(const FString& JsonString)
{
FParsedData ParsedData;
auto VaRestSubsystem = CastChecked<UVaRestSubsystem>(USubsystemBlueprintLibrary::GetEngineSubsystem(UVaRestSubsystem::StaticClass()), ECastCheckedType::NullChecked);
if (!VaRestSubsystem)
{
return ParsedData;
}
UVaRestJsonObject* VaRestJsonObject = VaRestSubsystem->ConstructVaRestJsonObject();
if (!VaRestJsonObject)
{
return ParsedData;
}
if (VaRestJsonObject->DecodeJson(JsonString, true))
{
UVaRestJsonObject* TempJsonObject = VaRestJsonObject->GetObjectField("startup_instructions");
if (TempJsonObject)
{
ParsedData.LevelName = TempJsonObject->GetStringField("level");
ParsedData.CharacterName = TempJsonObject->GetStringField("character");
ParsedData.Quality = TempJsonObject->GetStringField("quality");
}
}
else
{
UE_LOG(LogTemp, Error, TEXT("Parse Problem"));
}
return ParsedData;
}
void ULuckyRobotsGameInstance::SetCurrentFolderName(const FString& FolderName)
{
CurrentCaptureSettingsData.FolderName = FText::FromString(FolderName);

View File

@ -177,47 +177,12 @@ void UMainScreenUserWidget::UpdateSelectQuality()
BPUpdateSelectQuality();
}
FParsedData UMainScreenUserWidget::DoJsonParse(const FString& JsonString)
{
FParsedData ParsedData;
auto VaRestSubsystem = CastChecked<UVaRestSubsystem>(USubsystemBlueprintLibrary::GetEngineSubsystem(UVaRestSubsystem::StaticClass()), ECastCheckedType::NullChecked);
if (!VaRestSubsystem)
{
return ParsedData;
}
UVaRestJsonObject* VaRestJsonObject = VaRestSubsystem->ConstructVaRestJsonObject();
if (!VaRestJsonObject)
{
return ParsedData;
}
if (VaRestJsonObject->DecodeJson(JsonString, true))
{
UVaRestJsonObject* TempJsonObject = VaRestJsonObject->GetObjectField("startup_instructions");
if (TempJsonObject)
{
ParsedData.LevelName = TempJsonObject->GetStringField("level");
ParsedData.CharacterName = TempJsonObject->GetStringField("character");
ParsedData.Quality = TempJsonObject->GetStringField("quality");
}
}
else
{
UE_LOG(LogTemp, Error, TEXT("Parse Problem"));
}
return ParsedData;
}
void UMainScreenUserWidget::OnMessageDispatchedHandler(const FString& Message)
{
ULuckyRobotsGameInstance* GameInstance = Cast<ULuckyRobotsGameInstance>(GetGameInstance());
if (GameInstance)
{
FParsedData ParsedData = DoJsonParse(Message);
FParsedData ParsedData = GameInstance->DoJsonParse(Message);
if (ParsedData.CharacterName == "DRONE")
{
GameInstance->CurrentSelectRobot = ERobotsName::LuckyDrone;

View File

@ -14,3 +14,38 @@ void UGameUserWidget::NativeConstruct()
GameInstance->GameUserWidget = this;
}
}
void UGameUserWidget::DoWaitSecond()
{
ULuckyRobotsGameInstance* GameInstance = Cast<ULuckyRobotsGameInstance>(GetGameInstance());
if (GameInstance)
{
if (GameInstance->bIsFirstOpenGame)
{
DownCount = 3;
GetWorld()->GetTimerManager().ClearTimer(UpdateDownCountTimerHandle);
GetWorld()->GetTimerManager().SetTimer(UpdateDownCountTimerHandle, this, &UGameUserWidget::UpdateDownCount, 1.0f, true);
UpdateDownCount();
}
}
}
void UGameUserWidget::UpdateDownCount()
{
if (DownCount > 0)
{
DownCountStr = FString::FromInt(DownCount);
DownCount--;
}
else
{
DownCountStr = "";
ULuckyRobotsGameInstance* GameInstance = Cast<ULuckyRobotsGameInstance>(GetGameInstance());
if (GameInstance)
{
GameInstance->DoQualitySettings(0, true);
}
GetWorld()->GetTimerManager().ClearTimer(UpdateDownCountTimerHandle);
}
}