re3/src/weapons/Weapon.h

75 lines
1.5 KiB
C
Raw Normal View History

#pragma once
2019-07-04 20:31:21 +00:00
enum eWeaponType
{
2019-07-04 20:31:21 +00:00
WEAPONTYPE_UNARMED,
WEAPONTYPE_BASEBALLBAT,
WEAPONTYPE_COLT45,
WEAPONTYPE_UZI,
WEAPONTYPE_SHOTGUN,
WEAPONTYPE_AK47,
WEAPONTYPE_M16,
WEAPONTYPE_SNIPERRIFLE,
WEAPONTYPE_ROCKETLAUNCHER,
WEAPONTYPE_FLAMETHROWER,
WEAPONTYPE_MOLOTOV,
WEAPONTYPE_GRENADE,
WEAPONTYPE_DETONATOR,
2019-07-04 20:31:21 +00:00
WEAPONTYPE_TOTAL_INVENTORY_WEAPONS,
WEAPONTYPE_TOTALWEAPONS,
WEAPONTYPE_ARMOUR,
WEAPONTYPE_RAMMEDBYCAR,
WEAPONTYPE_RUNOVERBYCAR,
WEAPONTYPE_EXPLOSION,
WEAPONTYPE_UZI_DRIVEBY,
WEAPONTYPE_WATER,
WEAPONTYPE_FALL_DAMAGE,
WEAPONTYPE_UNIDENTIFIED,
};
enum eWeaponFire {
WEAPON_FIRE_MELEE,
WEAPON_FIRE_INSTANT_HIT,
WEAPON_FIRE_PROJECTILE,
WEAPON_FIRE_AREA_EFFECT,
WEAPON_FIRE_USE
};
// Taken from MTA SA, seems it's unchanged
enum eWeaponState
{
WEAPONSTATE_READY,
WEAPONSTATE_FIRING,
WEAPONSTATE_RELOADING,
WEAPONSTATE_OUT_OF_AMMO,
WEAPONSTATE_MELEE_MADECONTACT
};
2019-07-23 14:39:30 +00:00
class CEntity;
class CAutomobile;
class CWeapon
{
public:
eWeaponType m_eWeaponType;
eWeaponState m_eWeaponState;
uint32 m_nAmmoInClip;
uint32 m_nAmmoTotal;
uint32 m_nTimer;
bool m_bAddRotOffset;
CWeapon() {
m_bAddRotOffset = false;
}
void Initialise(eWeaponType type, int ammo);
2019-07-23 14:39:30 +00:00
void Update(int32 audioEntity);
void Reload(void);
bool Fire(CEntity*, CVector*);
2019-07-23 14:39:30 +00:00
void FireFromCar(CAutomobile *car, bool left);
void AddGunshell(CEntity*, CVector const&, CVector2D const&, float);
bool IsTypeMelee(void);
2019-07-15 12:11:40 +00:00
bool IsType2Handed(void);
};
static_assert(sizeof(CWeapon) == 0x18, "CWeapon: error");