#pragma once

#include "CoreMinimal.h"
#include "Engine/DataTable.h"
#include "Mobs/MobTypes.h"
#include "Players/StatBlock.h"
#include "MobRow.generated.h"

class APawn;

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

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

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Mob")
	TSoftClassPtr<APawn> BlueprintRef;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Mob")
	EMobFamily Family = EMobFamily::Beast;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Mob")
	EMobFaction Faction = EMobFaction::Hostile;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Mob")
	EMobBehavior Behavior = EMobBehavior::Aggressive;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Mob")
	int32 Level = 1;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Stats")
	FStatBlock Stats;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Combat")
	float AggroRadius = 800.f;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Combat")
	float LeashRadius = 2000.f;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Rewards")
	int32 ExperienceReward = 0;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Rewards")
	FName DropTableRow;
};
