#pragma once

#include "CoreMinimal.h"
#include "ZMMOJobTypes.generated.h"

/**
 *  Tier hierarquico de um job. Espelha `EJobTier` do server em
 *  `Server/.../JobsSystem/Public/JobTypes.hpp`. Valores TEM que bater
 *  byte-a-byte com a enum do server porque o snapshot pode carregar
 *  tier como uint8 no futuro.
 *
 *  Renascer (RO pre-renewal): char no Tier 2 (Specialization) que cumpre
 *  condicao volta pra Tier 3 (RebornBeginner) com bonus permanente,
 *  abrindo path paralelo RebornVocation → Mastery (coroa final).
 */
UENUM(BlueprintType)
enum class EZMMOJobTier : uint8
{
	Beginner        = 0  UMETA(DisplayName = "Iniciante"),
	Vocation        = 1  UMETA(DisplayName = "Vocacao"),
	Specialization  = 2  UMETA(DisplayName = "Especializacao"),
	RebornBeginner  = 3  UMETA(DisplayName = "Iniciante Renascido"),
	RebornVocation  = 4  UMETA(DisplayName = "Vocacao Renascida"),
	Mastery         = 5  UMETA(DisplayName = "Mestria"),
};

/**
 *  Tipos de arma. Espelha `EWeaponType` do server. Usado em `AllowedWeapons`
 *  do DA pra UI (filtrar items equipaveis) + validacao server-side futura
 *  quando InventorySystem entrar.
 *
 *  Ordem TEM que bater com server porque o bitmask `allowedWeaponsMask` no
 *  JobDef usa bit N = EWeaponType(N).
 */
UENUM(BlueprintType)
enum class EZMMOWeaponType : uint8
{
	Fist     = 0   UMETA(DisplayName = "Punho"),
	Dagger   = 1   UMETA(DisplayName = "Adaga"),
	Sword1H  = 2   UMETA(DisplayName = "Espada 1M"),
	Sword2H  = 3   UMETA(DisplayName = "Espada 2M"),
	Spear1H  = 4   UMETA(DisplayName = "Lanca 1M"),
	Spear2H  = 5   UMETA(DisplayName = "Lanca 2M"),
	Axe1H    = 6   UMETA(DisplayName = "Machado 1M"),
	Axe2H    = 7   UMETA(DisplayName = "Machado 2M"),
	Mace1H   = 8   UMETA(DisplayName = "Maca 1M"),
	Mace2H   = 9   UMETA(DisplayName = "Maca 2M"),
	Staff1H  = 10  UMETA(DisplayName = "Cajado 1M"),
	Staff2H  = 11  UMETA(DisplayName = "Cajado 2M"),
	Bow      = 12  UMETA(DisplayName = "Arco"),
	Knuckle  = 13  UMETA(DisplayName = "Soqueira"),
	Musical  = 14  UMETA(DisplayName = "Instrumento Musical"),
	Whip     = 15  UMETA(DisplayName = "Chicote"),
	Book     = 16  UMETA(DisplayName = "Livro"),
	Katar    = 17  UMETA(DisplayName = "Katar"),
	Gun      = 18  UMETA(DisplayName = "Arma de Fogo"),
};
