#pragma once

#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "EScreenType.h"
#include "ScreenController.generated.h"

class UDBDGameInstance;
class UGFxObject;
class UGFxMoviePlayer;
class UScreenBase;
class UUserWidget;

UCLASS(Blueprintable)
class DEADBYDAYLIGHT_API UScreenController : public UObject
{
	GENERATED_BODY()

private:
	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient, meta=(AllowPrivateAccess=true))
	UDBDGameInstance* _gameInstance;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient, meta=(AllowPrivateAccess=true))
	UGFxObject* _screenControllerObj;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient, meta=(AllowPrivateAccess=true))
	UGFxMoviePlayer* _moviePlayer;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient, meta=(AllowPrivateAccess=true))
	TMap<FString, UScreenBase*> _screenDictionary;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient, meta=(AllowPrivateAccess=true))
	TMap<FString, EScreenType> _screenTypeDictionary;

	UPROPERTY(EditInstanceOnly, Transient, Export)
	TMap<UClass*, TWeakObjectPtr<UUserWidget>> _cachedUMGScreens;

public:
	UScreenController();
};

FORCEINLINE uint32 GetTypeHash(const UScreenController) { return 0; }
