Files
UnrealEngine/Engine/Source/Runtime/GameMenuBuilder/Private/GameMenuBuilderStyle.cpp
2025-05-18 13:04:45 +08:00

72 lines
2.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "GameMenuBuilderStyle.h"
#include "Modules/ModuleManager.h"
#include "Styling/SlateStyleMacros.h"
#include "Styling/SlateStyleRegistry.h"
#include "Styling/SlateTypes.h"
#include "Styling/CoreStyle.h"
#include "Framework/Application/SlateApplication.h"
#include "Slate/SlateGameResources.h"
#include "GameMenuBuilderModule.h"
TSharedPtr< FSlateStyleSet > FGameMenuBuilderStyle::SimpleStyleInstance = NULL;
void FGameMenuBuilderStyle::Initialize(const FString StyleName)
{
if (FModuleManager::Get().IsModuleLoaded("GameMenuBuilder") == false)
{
FModuleManager::LoadModuleChecked<IGameMenuBuilderModule>("GameMenuBuilder");
}
if (!SimpleStyleInstance.IsValid())
{
SimpleStyleInstance = Create(StyleName);
FSlateStyleRegistry::RegisterSlateStyle(*SimpleStyleInstance);
}
}
void FGameMenuBuilderStyle::Shutdown()
{
FSlateStyleRegistry::UnRegisterSlateStyle(*SimpleStyleInstance);
ensure(SimpleStyleInstance.IsUnique());
SimpleStyleInstance.Reset();
}
FName FGameMenuBuilderStyle::GetStyleSetName()
{
static FName StyleSetName(TEXT("MenuPageStyle"));
return StyleSetName;
}
TSharedRef< FSlateStyleSet > FGameMenuBuilderStyle::Create(const FString StyleName)
{
TSharedRef<FSlateGameResources> StyleRef = FSlateGameResources::New(GetStyleSetName(), *StyleName);
const FName FontName = "Light";
const int32 FontSize = 42;
FSlateStyleSet& Style = StyleRef.Get();
// Fonts still need to be specified in code for now
Style.Set("GameMenuStyle.MenuTextStyle", FTextBlockStyle()
.SetFont(DEFAULT_FONT(FontName, FontSize))
.SetColorAndOpacity(FLinearColor::White)
);
Style.Set("GameMenuStyle.MenuHeaderTextStyle", FTextBlockStyle()
.SetFont(DEFAULT_FONT(FontName, FontSize))
.SetColorAndOpacity(FLinearColor::White)
);
return StyleRef;
}
void FGameMenuBuilderStyle::ReloadTextures()
{
FSlateApplication::Get().GetRenderer()->ReloadTextureResources();
}
const ISlateStyle& FGameMenuBuilderStyle::Get()
{
return *SimpleStyleInstance;
}