186 lines
3.9 KiB
C++
186 lines
3.9 KiB
C++
|
|
class playerent;
|
|
class bounceent;
|
|
|
|
struct weapon
|
|
{
|
|
const static int weaponchangetime;
|
|
const static float weaponbeloweye;
|
|
static void equipplayer(playerent *pl);
|
|
|
|
weapon(class playerent *owner, int type);
|
|
virtual ~weapon() {}
|
|
|
|
int type;
|
|
playerent *owner;
|
|
const struct guninfo &info;
|
|
int &ammo, &mag, &gunwait, shots;
|
|
virtual int dynspread();
|
|
virtual float dynrecoil();
|
|
int reloading, lastaction;
|
|
|
|
virtual bool attack(vec &targ) = 0;
|
|
virtual void attackfx(const vec &from, const vec &to, int millis) = 0;
|
|
virtual void attackphysics(vec &from, vec &to);
|
|
virtual void attacksound();
|
|
virtual bool reload(bool autoreloaded);
|
|
virtual void reset() {}
|
|
virtual bool busy() { return false; }
|
|
|
|
virtual int modelanim() = 0;
|
|
virtual void updatetimers(int millis);
|
|
virtual bool selectable();
|
|
virtual bool deselectable();
|
|
virtual void renderstats();
|
|
virtual void renderhudmodel();
|
|
virtual void renderaimhelp(bool teamwarning);
|
|
|
|
virtual void onselecting(bool sound);
|
|
virtual void ondeselecting() {}
|
|
virtual void onammopicked() {}
|
|
virtual void onownerdies() {}
|
|
virtual void removebounceent(bounceent *b) {}
|
|
|
|
void sendshoot(vec &from, vec &to, int millis);
|
|
bool modelattacking();
|
|
void renderhudmodel(int lastaction, int index = 0);
|
|
|
|
virtual int flashtime() const;
|
|
};
|
|
|
|
class grenadeent;
|
|
|
|
enum { GST_NONE = 0, GST_INHAND, GST_THROWING };
|
|
|
|
struct grenades : weapon
|
|
{
|
|
grenadeent *inhandnade;
|
|
const int throwwait;
|
|
int throwmillis;
|
|
int cookingmillis;
|
|
int state;
|
|
|
|
grenades(playerent *owner);
|
|
bool attack(vec &targ);
|
|
void attackfx(const vec &from, const vec &to, int millis);
|
|
int modelanim();
|
|
void activatenade(const vec &to);
|
|
void thrownade();
|
|
void thrownade(const vec &vel);
|
|
void dropnade();
|
|
void renderstats();
|
|
bool selectable();
|
|
void reset();
|
|
bool busy();
|
|
void onselecting(bool sound);
|
|
void onownerdies();
|
|
void removebounceent(bounceent *b);
|
|
int flashtime() const;
|
|
};
|
|
|
|
|
|
struct gun : weapon
|
|
{
|
|
gun(playerent *owner, int type);
|
|
virtual bool attack(vec &targ);
|
|
virtual void attackfx(const vec &from, const vec &to, int millis);
|
|
int modelanim();
|
|
void checkautoreload();
|
|
void onownerdies();
|
|
};
|
|
|
|
|
|
struct subgun : gun
|
|
{
|
|
subgun(playerent *owner);
|
|
int dynspread();
|
|
bool selectable();
|
|
};
|
|
|
|
|
|
struct sniperrifle : gun
|
|
{
|
|
bool scoped;
|
|
int scoped_since;
|
|
|
|
sniperrifle(playerent *owner);
|
|
void attackfx(const vec &from, const vec &to, int millis);
|
|
bool reload(bool autoreloaded);
|
|
|
|
int dynspread();
|
|
float dynrecoil();
|
|
bool selectable();
|
|
void onselecting(bool sound);
|
|
void ondeselecting();
|
|
void onownerdies();
|
|
void renderhudmodel();
|
|
void renderaimhelp(bool teamwarning);
|
|
void setscope(bool enable);
|
|
};
|
|
|
|
|
|
struct carbine : gun
|
|
{
|
|
carbine(playerent *owner);
|
|
bool selectable();
|
|
};
|
|
|
|
struct shotgun : gun
|
|
{
|
|
shotgun(playerent *owner);
|
|
void attackphysics(vec &from, vec &to);
|
|
bool attack(vec &targ);
|
|
void attackfx(const vec &from, const vec &to, int millis);
|
|
bool selectable();
|
|
};
|
|
|
|
|
|
struct assaultrifle : gun
|
|
{
|
|
assaultrifle(playerent *owner);
|
|
int dynspread();
|
|
float dynrecoil();
|
|
bool selectable();
|
|
};
|
|
|
|
struct pistol : gun
|
|
{
|
|
pistol(playerent *owner);
|
|
bool selectable();
|
|
};
|
|
|
|
|
|
struct akimbo : gun
|
|
{
|
|
akimbo(playerent *owner);
|
|
|
|
int akimboside;
|
|
int akimbomillis;
|
|
int akimbolastaction[2];
|
|
|
|
void attackfx(const vec &from, const vec &to, int millis);
|
|
void onammopicked();
|
|
void onselecting(bool sound);
|
|
bool selectable();
|
|
void updatetimers(int millis);
|
|
void reset();
|
|
void renderhudmodel();
|
|
bool timerout();
|
|
};
|
|
|
|
|
|
struct knife : weapon
|
|
{
|
|
knife(playerent *owner);
|
|
|
|
bool attack(vec &targ);
|
|
int modelanim();
|
|
|
|
void drawstats();
|
|
void attackfx(const vec &from, const vec &to, int millis);
|
|
void renderstats();
|
|
|
|
int flashtime() const;
|
|
};
|
|
|