데이터 기반(Data-Driven) 설계와 상속 기반(Inheritance-Based) 설계를 혼합하여, 각 객체의 역할을 명확히 하고 유기적인 상호작용을 구현하였음
클래스 | 역할 (책임) | 상세 설명 |
---|---|---|
WeaponData.h | 데이터 명세서 | 무기의 모든 스펙(대미지, 연사속도, 반동, 스폰할 프로젝타일 클래스, 애니메이션, 이펙트 등)을 담고 있는 순수 데이터 구조체. |
IWeaponInterface.h | 행동 계약서 | PrimaryFire, StopFire, Reload 등 무기가 수행해야 할 '행동'을 정의. 제어부와 구현부를 완벽하게 분리. |
WeaponBase.h | 무기 원형 | 모든 무기가 공유하는 핵심 로직(데이터 로드, 발사 조건 판단, 반동, 이펙트 재생, 히트스캔/프로젝타일 발사)을 구현한 부모 클래스. |
**Weapon_Pistol.h | ||
Weapon_Pulse.h** | 단발 무기 | AWeaponBase를 상속받아, 클릭 시 FireAction을 호출하는 단발 발사 로직을 구현. |
**Weapon_SMG.h | ||
Weapon_Rifle.h** | 자동 연사 무기 | AWeaponBase를 상속받아, 타이머를 이용해 FireAction을 반복 호출하는 자동 연사 로직을 구현. |
BaseProjectile.h | 투사체 원형 | 모든 투사체의 공통 기능(움직임, 충돌, 수명, 기본 OnHit 로직)을 담당하는 추상 부모 클래스. |
RifleProjectile.h | 라이플 총알 | ABaseProjectile을 상속받아, 빠른 속도와 포인트 대미지를 주는 OnHit 로직을 구현. |
PulseProjectile.h | 펄스 에너지탄 | ABaseProjectile을 상속받아, 충돌 시 ApplyRadialDamage를 호출하여 범위 피해를 주는 OnHit 로직을 구현. |
InventoryComponent.h | 장비 관리자 | 최대 2개의 무기를 '소지'하고, Destroy와 Spawn을 통해 무기를 교체하는 '가상 인벤토리' 시스템을 관리. |
Pickup_Weapon.h | 상호작용 아이템 | 월드에 배치되어 플레이어와의 상호작용(E키)을 통해 InventoryComponent에 무기를 추가/교체하는 역할을 수행. |