Files
UnrealEngine/Samples/Games/Lyra/Plugins/CommonGame/Source/Public/GameUIManagerSubsystem.h
2025-05-18 13:04:45 +08:00

55 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Subsystems/GameInstanceSubsystem.h"
#include "UObject/SoftObjectPtr.h"
#include "GameUIManagerSubsystem.generated.h"
#define UE_API COMMONGAME_API
class FSubsystemCollectionBase;
class UCommonLocalPlayer;
class UGameUIPolicy;
class UObject;
/**
* This manager is intended to be replaced by whatever your game needs to
* actually create, so this class is abstract to prevent it from being created.
*
* If you just need the basic functionality you will start by sublcassing this
* subsystem in your own game.
*/
UCLASS(MinimalAPI, Abstract, config = Game)
class UGameUIManagerSubsystem : public UGameInstanceSubsystem
{
GENERATED_BODY()
public:
UGameUIManagerSubsystem() { }
UE_API virtual void Initialize(FSubsystemCollectionBase& Collection) override;
UE_API virtual void Deinitialize() override;
UE_API virtual bool ShouldCreateSubsystem(UObject* Outer) const override;
const UGameUIPolicy* GetCurrentUIPolicy() const { return CurrentPolicy; }
UGameUIPolicy* GetCurrentUIPolicy() { return CurrentPolicy; }
UE_API virtual void NotifyPlayerAdded(UCommonLocalPlayer* LocalPlayer);
UE_API virtual void NotifyPlayerRemoved(UCommonLocalPlayer* LocalPlayer);
UE_API virtual void NotifyPlayerDestroyed(UCommonLocalPlayer* LocalPlayer);
protected:
UE_API void SwitchToPolicy(UGameUIPolicy* InPolicy);
private:
UPROPERTY(Transient)
TObjectPtr<UGameUIPolicy> CurrentPolicy = nullptr;
UPROPERTY(config, EditAnywhere)
TSoftClassPtr<UGameUIPolicy> DefaultUIPolicyClass;
};
#undef UE_API