#pragma once

#include "CoreMinimal.h"
#include "Engine/DataTable.h"
#include "Engine/World.h"
#include "ZoneRow.generated.h"

class USoundBase;

UENUM(BlueprintType)
enum class EZoneRules : uint8
{
	Safe        UMETA(DisplayName = "Safe"),
	PvE         UMETA(DisplayName = "PvE"),
	PvP         UMETA(DisplayName = "PvP"),
	Dungeon     UMETA(DisplayName = "Dungeon"),
	Instance    UMETA(DisplayName = "Instance")
};

USTRUCT(BlueprintType)
struct ZMMO_API FZoneRow : public FTableRowBase
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Zone")
	FText DisplayName;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Zone")
	TSoftObjectPtr<UWorld> Map;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Zone")
	EZoneRules Rules = EZoneRules::PvE;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Zone")
	int32 RecommendedLevelMin = 1;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Zone")
	int32 RecommendedLevelMax = 10;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Zone")
	TSoftObjectPtr<USoundBase> AmbientMusic;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Zone")
	TSoftObjectPtr<USoundBase> AmbientSound;
};
