You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.7 KiB
104 lines
2.7 KiB
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
//
|
|
//=============================================================================
|
|
#ifndef TF_WEAPON_PISTOL_H
|
|
#define TF_WEAPON_PISTOL_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "tf_weaponbase_gun.h"
|
|
|
|
#include "tf_weapon_shotgun.h"
|
|
|
|
// Client specific.
|
|
#ifdef CLIENT_DLL
|
|
#define CTFPistol C_TFPistol
|
|
#define CTFPistol_Scout C_TFPistol_Scout
|
|
#define CTFPistol_ScoutPrimary C_TFPistol_ScoutPrimary
|
|
#define CTFPistol_ScoutSecondary C_TFPistol_ScoutSecondary
|
|
#endif
|
|
|
|
// We allow the pistol to fire as fast as the player can click.
|
|
// This is the minimum time between shots.
|
|
#define PISTOL_FASTEST_REFIRE_TIME 0.1f
|
|
|
|
// The faster the player fires, the more inaccurate he becomes
|
|
#define PISTOL_ACCURACY_SHOT_PENALTY_TIME 0.2f // Applied amount of time each shot adds to the time we must recover from
|
|
#define PISTOL_ACCURACY_MAXIMUM_PENALTY_TIME 1.5f // Maximum time penalty we'll allow
|
|
|
|
//=============================================================================
|
|
//
|
|
// TF Weapon Pistol.
|
|
//
|
|
class CTFPistol : public CTFWeaponBaseGun
|
|
{
|
|
public:
|
|
|
|
DECLARE_CLASS( CTFPistol, CTFWeaponBaseGun );
|
|
DECLARE_NETWORKCLASS();
|
|
DECLARE_PREDICTABLE();
|
|
|
|
// Server specific.
|
|
#ifdef GAME_DLL
|
|
DECLARE_DATADESC();
|
|
#endif
|
|
|
|
CTFPistol() {}
|
|
~CTFPistol() {}
|
|
|
|
virtual int GetWeaponID( void ) const { return TF_WEAPON_PISTOL; }
|
|
|
|
private:
|
|
CTFPistol( const CTFPistol & ) {}
|
|
};
|
|
|
|
// Scout specific version
|
|
class CTFPistol_Scout : public CTFPistol
|
|
{
|
|
public:
|
|
DECLARE_CLASS( CTFPistol_Scout, CTFPistol );
|
|
DECLARE_NETWORKCLASS();
|
|
DECLARE_PREDICTABLE();
|
|
|
|
virtual int GetWeaponID( void ) const { return TF_WEAPON_PISTOL_SCOUT; }
|
|
};
|
|
|
|
class CTFPistol_ScoutPrimary : public CTFPistol_Scout
|
|
{
|
|
public:
|
|
DECLARE_CLASS( CTFPistol_ScoutPrimary, CTFPistol_Scout );
|
|
DECLARE_NETWORKCLASS();
|
|
DECLARE_PREDICTABLE();
|
|
|
|
CTFPistol_ScoutPrimary();
|
|
|
|
virtual int GetViewModelWeaponRole() { return TF_WPN_TYPE_SECONDARY; }
|
|
virtual int GetWeaponID( void ) const { return TF_WEAPON_HANDGUN_SCOUT_PRIMARY; }
|
|
virtual void PlayWeaponShootSound( void );
|
|
virtual void SecondaryAttack( void );
|
|
virtual void ItemPostFrame();
|
|
virtual bool Holster( CBaseCombatWeapon *pSwitchingTo );
|
|
virtual void Precache( void );
|
|
|
|
void Push( void );
|
|
|
|
private:
|
|
float m_flPushTime;
|
|
};
|
|
|
|
class CTFPistol_ScoutSecondary : public CTFPistol_Scout
|
|
{
|
|
public:
|
|
DECLARE_CLASS( CTFPistol_ScoutSecondary, CTFPistol_Scout );
|
|
DECLARE_NETWORKCLASS();
|
|
DECLARE_PREDICTABLE();
|
|
|
|
virtual int GetViewModelWeaponRole() { return TF_WPN_TYPE_SECONDARY; }
|
|
virtual int GetWeaponID( void ) const { return TF_WEAPON_HANDGUN_SCOUT_SECONDARY; }
|
|
|
|
virtual int GetDamageType( void ) const;
|
|
};
|
|
|
|
#endif // TF_WEAPON_PISTOL_H
|