feat: 무기 특성(WeaponTrait) 시스템 및 보조손 장착 구현
- WeaponTrait enum 추가 (Melee/TwoHanded/Defense/Magic/Ranged) - SkillData에 allowedWeaponTraits 필드 및 MatchesWeaponTrait() 검증 메서드 추가 - WeaponEquipment에 보조손(오프핸드) 슬롯 지원 (장착/해제/스탯 보너스/네트워크 동기화) - EquippedWeaponTraits 프로퍼티로 메인+보조 무기 특성 합산 제공 - PlayerSkillInput 4곳(OnSkillInput/RPC/CanUseSkill/DebugExecute)에 무기 trait 제약 검증 추가 - SkillSlotUI에 무기 불호환 시 회색 표시(weaponIncompatibleColor) 지원 - 기존 검 에셋에 weaponTrait=Melee 설정
This commit is contained in:
@@ -1,9 +1,26 @@
|
||||
using System;
|
||||
|
||||
using UnityEngine;
|
||||
|
||||
using Colosseum.Stats;
|
||||
|
||||
namespace Colosseum.Weapons
|
||||
{
|
||||
/// <summary>
|
||||
/// 무기 특성. 스킬 사용 조건 제약에 사용합니다.
|
||||
/// 여러 특성을 동시에 가질 수 있습니다.
|
||||
/// </summary>
|
||||
[Flags]
|
||||
public enum WeaponTrait
|
||||
{
|
||||
None = 0,
|
||||
Melee = 1 << 0, // 근접 (한손검, 양손검, 완드, 스태프)
|
||||
TwoHanded = 1 << 1, // 양손 (양손검, 스태프)
|
||||
Defense = 1 << 2, // 방어 (방패)
|
||||
Magic = 1 << 3, // 마법 (완드, 스태프)
|
||||
Ranged = 1 << 4, // 사격 (활)
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 무기 장착 위치
|
||||
/// </summary>
|
||||
@@ -29,6 +46,8 @@ namespace Colosseum.Weapons
|
||||
[SerializeField] private Sprite icon;
|
||||
|
||||
[Header("장착 설정")]
|
||||
[Tooltip("무기의 특성 (근접/양손/방어/마법/사격). 스킬 사용 조건에 사용됩니다.")]
|
||||
[SerializeField] private WeaponTrait weaponTrait = WeaponTrait.Melee;
|
||||
[Tooltip("무기가 장착될 슬롯")]
|
||||
[SerializeField] private WeaponSlot weaponSlot = WeaponSlot.RightHand;
|
||||
[Tooltip("무기 프리팹 (메시, 콜라이더 등 포함)")]
|
||||
@@ -68,6 +87,7 @@ namespace Colosseum.Weapons
|
||||
public Sprite Icon => icon;
|
||||
|
||||
// Properties - 장착 설정
|
||||
public WeaponTrait WeaponTrait => weaponTrait;
|
||||
public WeaponSlot WeaponSlot => weaponSlot;
|
||||
public GameObject WeaponPrefab => weaponPrefab;
|
||||
public Vector3 PositionOffset => positionOffset;
|
||||
|
||||
Reference in New Issue
Block a user