martinluckyrobots 144b3e3bce optimization some umg
2025-04-14 19:36:02 +08:00

156 lines
3.6 KiB
C++

// Fill out your copyright notice in the Description page of Project Settings.
#include "UI/GameUserWidget.h"
#include "Core/LuckyRobotsGameInstance.h"
#include "UI/Settings/CaptureSettingsUserWidget.h"
#include "UI/Settings/SelectGoalUserWidget.h"
#include "Kismet/GameplayStatics.h"
#include "Gameplay/NaviSplineCreator.h"
void UGameUserWidget::NativeConstruct()
{
Super::NativeConstruct();
ULuckyRobotsGameInstance* GameInstance = Cast<ULuckyRobotsGameInstance>(GetGameInstance());
if (GameInstance)
{
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);
}
}
void UGameUserWidget::ToggleHide()
{
ULuckyRobotsGameInstance* GameInstance = Cast<ULuckyRobotsGameInstance>(GetGameInstance());
if (GameInstance)
{
GameInstance->bIsDebug = !GameInstance->bIsDebug;
}
}
void UGameUserWidget::ToggleTestMode()
{
ULuckyRobotsGameInstance* GameInstance = Cast<ULuckyRobotsGameInstance>(GetGameInstance());
if (GameInstance)
{
GameInstance->bIsWidgetTestMode = !GameInstance->bIsWidgetTestMode;
}
}
void UGameUserWidget::DoCapture()
{
if (GetCaptureSettingsUserWidget())
{
GetCaptureSettingsUserWidget()->ToggleMenu();
}
}
void UGameUserWidget::DoAutoConfirm()
{
USelectGoalUserWidget* SelectGoalUserWidget = GetSelectGoalUserWidget();
if (SelectGoalUserWidget)
{
SelectGoalUserWidget->DoAutoConfirm();
}
}
void UGameUserWidget::DoReset()
{
ULuckyRobotsGameInstance* GameInstance = Cast<ULuckyRobotsGameInstance>(GetGameInstance());
if (GameInstance)
{
if (GameInstance->bIsCapture)
{
if (GetCaptureSettingsUserWidget())
{
GetCaptureSettingsUserWidget()->BPChangeCaptureState();
}
}
}
OnReset.Broadcast();
}
void UGameUserWidget::DoExit()
{
ULuckyRobotsGameInstance* GameInstance = Cast<ULuckyRobotsGameInstance>(GetGameInstance());
if (GameInstance)
{
if (GameInstance->bIsCapture)
{
if (GetCaptureSettingsUserWidget())
{
GetCaptureSettingsUserWidget()->BPChangeCaptureState();
}
}
if (GameInstance->LobbyLevelObject)
{
UGameplayStatics::OpenLevelBySoftObjectPtr(this, GameInstance->LobbyLevelObject);
}
}
}
void UGameUserWidget::SwitchGamePaused()
{
ULuckyRobotsGameInstance* GameInstance = Cast<ULuckyRobotsGameInstance>(GetGameInstance());
if (GameInstance)
{
GameInstance->SwitchGamePaused();
}
}
void UGameUserWidget::ToggleShowPath()
{
ULuckyRobotsGameInstance* GameInstance = Cast<ULuckyRobotsGameInstance>(GetGameInstance());
if (GameInstance)
{
GameInstance->bIsShowPath = !GameInstance->bIsShowPath;
}
TArray<AActor*> AllNaviSplineCreator;
UGameplayStatics::GetAllActorsOfClass(this, ANaviSplineCreator::StaticClass(), AllNaviSplineCreator);
for (auto NaviSplineCreatorActor : AllNaviSplineCreator)
{
ANaviSplineCreator* NaviSplineCreator = Cast<ANaviSplineCreator>(NaviSplineCreatorActor);
if (NaviSplineCreator)
{
NaviSplineCreator->UpdateSplineVisibility();
}
}
}