#pragma once

#include "CoreMinimal.h"
#include "Engine/DataAsset.h"
#include "GameplayTagContainer.h"
#include "PerkLevelDefinition.h"
#include "UObject/SoftObjectPtr.h"
#include "GameEventForwarderInfo.h"
#include "DesignTunableDataAsset.generated.h"

class UDBDTextDesignTunables;
class UDBDCoreUMGDesignTunables;
class UMenuCameraDesignTunables;
class UGameTypeModifierDefaults;

UCLASS(Blueprintable)
class UDesignTunableDataAsset : public UDataAsset
{
	GENERATED_BODY()

public:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool _overrideDefaultLobby;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FName _lobbyOverrideName;

	UPROPERTY(EditAnywhere)
	TArray<FGameplayTag> _conspicuousActionEvents;

	UPROPERTY(EditAnywhere)
	int8 EntityDispleasedKills;

	UPROPERTY(EditAnywhere)
	int8 BrutalKillerKills;

	UPROPERTY(EditAnywhere)
	int8 RuthlessKillerKills;

	UPROPERTY(EditAnywhere)
	int8 MercilessKillerKills;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 WinStreakThresholdLarge;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 WinStreakThresholdSmall;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 MaxFearTokens;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 QuantityOfItemsToBuyBeforeFreeBloodwebRefresh;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TArray<FPerkLevelDefinition> PerkLevelDefinitions;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TSet<FGameplayTag> MetaModifiers;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TSet<FGameplayTag> RangedSurvivorAuraPerceptionModifiers;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TSet<FGameplayTag> SurvivorRevelatoryAuraPerceptionModifiers;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TSet<FGameplayTag> DisruptableAuraReadingFlags;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, NoClear)
	TSoftClassPtr<UDBDTextDesignTunables> TextDesignTunableClass;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TArray<FGameEventForwarderInfo> GameEventForwarderInfos;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, NoClear)
	TSoftClassPtr<UDBDCoreUMGDesignTunables> CoreUMGDesignTunableClass;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, NoClear)
	TSoftObjectPtr<UMenuCameraDesignTunables> SoftMenuCameraDesignTunable;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UGameTypeModifierDefaults* GameTypeModifierDefaults;

public:
	UDesignTunableDataAsset();
};

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