class CWeaponGeneral
{
public:
virtual CWeaponView* GetView() = 0;
virtual CWeaponSettings* GetSettings() = 0;
virtual CWeaponParameters* GetParameters() = 0;
virtual CWeaponAttachment* GetAttachment() = 0;
virtual CItemBox* GetItemBox() = 0;
virtual EWeaponStates GetCurrState() = 0;
};
struct IWeapon
{
virtual ~IWeapon() {}//0
virtual void SetFiringLocator(IWeaponFiringLocator* pLocator) = 0;//1
virtual IWeaponFiringLocator* GetFiringLocator() = 0;//2
virtual void AddEventListener(IWeaponEventListener* pListener, const char* who) = 0;//3
virtual void RemoveEventListener(IWeaponEventListener* pListener) = 0;//4
virtual void SetDestination(const Vec3& pos) = 0;//5 nulled
virtual void SetDestinationEntity(EntityId targetId) = 0;//6 nulled
virtual const Vec3& GetDestination() = 0;//7 nulled
virtual Vec3 GetFiringPos(const Vec3& probableHit) = 0;//8
virtual Vec3 GetFiringDir(const Vec3& probableHit, const Vec3& firingPos) const = 0;//9
virtual void StartFireParams(const SProjectileLaunchParams& params) = 0;//10
virtual void StartFire() = 0;//11
virtual void StopFire() = 0;//12
virtual bool CanFire() = 0;//13
virtual bool CanStopFire() = 0;//14
CWeaponGeneral* GetWeaponGeneral() { return m_pGeneral; }
private:
CWeaponGeneral* m_pGeneral;
};