#pragma once

#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "EGameState.h"
#include "DBDSocialNotificationFactory.generated.h"

class UDBDGameInstance;
class UToastManager;
class UDBDPartyFacade;
class UFriendManager;
class UDataTable;
class ADBDPlayerState;

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

protected:
	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	TWeakObjectPtr<UDBDGameInstance> _gameInstance;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	UToastManager* _toastMgr;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	UDBDPartyFacade* _partyFacade;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	UFriendManager* _friendManager;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	UDataTable* _toastTable;

protected:
	UFUNCTION(BlueprintCallable)
	void OnPWYWPartyMemberGameStateChanged(ADBDPlayerState* playerState, EGameState gameState);

public:
	UDBDSocialNotificationFactory();
};

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