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") [Header("Attack")] public ComboNode AttackRootNode; // Punch 입력 시 사용할 콤보 root (단일 노드 가능) [Header("Pickup Visual")] public Sprite PickupSprite; // 월드에 떨어뜨려진 모습 }