using UnityEngine;

// ============================================================================
// WeaponType
// ----------------------------------------------------------------------------
// 무기 분류. 향후 다른 시스템(예: 데미지 면역, 약점)에서 분기용으로 사용.
// ============================================================================
public enum WeaponType
{
    Sword,
    Gun
}

// ============================================================================
// WeaponRequirement
// ----------------------------------------------------------------------------
// 액션(ActionData)을 실행하기 위해 필요한 장착 무기 조건.
// 콤보 트랜지션을 무기별로 여러 개 깔아두고, 현재 장착 무기에 맞는 것만
// 실행되도록 필터링하는 데 사용 (예: 구르기 후 검=베기 / 총=사격 / 맨손=펀치).
// ============================================================================
public enum WeaponRequirement
{
    Any,        // 무기 무관 (제약 없음) — 기존 액션의 기본값
    Unarmed,    // 맨손일 때만 실행 가능
    Sword,      // 검 장착 시만 실행 가능
    Gun         // 총 장착 시만 실행 가능
}

// ============================================================================
// WeaponData
// ----------------------------------------------------------------------------
// 무기 한 종류의 정의를 담은 ScriptableObject.
// .asset 파일로 만들어 적의 드랍 슬롯과 픽업 프리팹에 할당.
//
// 효과:
//   - 장착 시 _idleAnimationState / _walkAnimationState를 이 무기 버전으로 교체
//   - Punch 입력 시 _punchRootNode 대신 AttackRootNode 사용
// ============================================================================
[CreateAssetMenu(fileName = "WeaponData", menuName = "Combat/WeaponData")]
public class WeaponData : ScriptableObject
{
    public string DisplayName;                 // UI 표시/디버그용 이름
    public WeaponType Type = WeaponType.Sword; // 분류 (시스템 분기용)

    [Header("Equipped Animations")]
    public string IdleAnimationState;          // 장착 시 idle 애니메이션 (예: "Idle_Sword")
    public string WalkAnimationState;          // 장착 시 walk 애니메이션 (예: "Walk_Sword")
    public string BackpedalAnimationState;     // 장착 시 백페달 애니메이션 (Down+좌우, 비우면 PlayerController 기본값)

    [Header("Attack")]
    public ComboNode AttackRootNode;           // Punch 입력 시 사용할 콤보 root (단일 노드 가능)

    [Header("Pickup Visual")]
    public Sprite PickupSprite;                // 월드에 떨어뜨려진 모습
}
