diff options
Diffstat (limited to 'game/shared/tf/tf_weapon_pda.h')
| -rw-r--r-- | game/shared/tf/tf_weapon_pda.h | 192 |
1 files changed, 192 insertions, 0 deletions
diff --git a/game/shared/tf/tf_weapon_pda.h b/game/shared/tf/tf_weapon_pda.h new file mode 100644 index 0000000..914af8a --- /dev/null +++ b/game/shared/tf/tf_weapon_pda.h @@ -0,0 +1,192 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: PDA Weapon +// +//============================================================================= + +#ifndef TF_WEAPON_PDA_H +#define TF_WEAPON_PDA_H +#ifdef _WIN32 +#pragma once +#endif + +#include "tf_shareddefs.h" +#include "tf_weaponbase.h" +#ifdef CLIENT_DLL + #include "tf_hud_base_build_menu.h" +#endif + +// Client specific. +#if defined( CLIENT_DLL ) + #define CTFWeaponPDA C_TFWeaponPDA + #define CTFWeaponPDA_Engineer_Build C_TFWeaponPDA_Engineer_Build + #define CTFWeaponPDA_Engineer_Destroy C_TFWeaponPDA_Engineer_Destroy + #define CTFWeaponPDA_Spy C_TFWeaponPDA_Spy + #define CTFWeaponPDA_Spy_Build C_TFWeaponPDA_Spy_Build + + #define CTFWeaponPDAExpansion_Dispenser C_TFWeaponPDAExpansion_Dispenser + #define CTFWeaponPDAExpansion_Teleporter C_TFWeaponPDAExpansion_Teleporter +#endif + +class CTFWeaponPDA : public CTFWeaponBase +{ +public: + DECLARE_CLASS( CTFWeaponPDA, CTFWeaponBase ); + DECLARE_NETWORKCLASS(); + DECLARE_PREDICTABLE(); + +#if !defined( CLIENT_DLL ) + DECLARE_DATADESC(); +#endif + + CTFWeaponPDA(); + + virtual void Spawn(); + +#if !defined( CLIENT_DLL ) + virtual void Precache(); + virtual void GetControlPanelInfo( int nPanelIndex, const char *&pPanelName ); +#else + virtual float CalcViewmodelBob( void ); + virtual CHudBaseBuildMenu *GetBuildMenu() const { return NULL; } +#endif + + virtual bool ShouldShowControlPanels( void ); + + virtual void PrimaryAttack(); + virtual void SecondaryAttack(); + virtual int GetWeaponID( void ) const { return TF_WEAPON_PDA; } + virtual bool ShouldDrawCrosshair( void ) { return false; } + virtual bool HasPrimaryAmmo() { return true; } + virtual bool CanBeSelected() { return true; } +#ifdef CLIENT_DLL + virtual void OnDataChanged( DataUpdateType_t type ) OVERRIDE; + virtual void UpdateOnRemove() OVERRIDE; +#endif + + virtual const char *GetPanelName() { return "pda_panel"; } + + +public: + CTFWeaponInfo *m_pWeaponInfo; + +private: +#ifdef CLIENT_DLL + void HideBuildMenu() const; +#endif + + CTFWeaponPDA( const CTFWeaponPDA & ) {} +}; + +class CTFWeaponPDA_Engineer_Build : public CTFWeaponPDA +{ +public: + DECLARE_CLASS( CTFWeaponPDA_Engineer_Build, CTFWeaponPDA ); + DECLARE_NETWORKCLASS(); + DECLARE_PREDICTABLE(); + + virtual const char *GetPanelName() { return ""; } + virtual int GetWeaponID( void ) const { return TF_WEAPON_PDA_ENGINEER_BUILD; } +#ifdef CLIENT_DLL + virtual CHudBaseBuildMenu *GetBuildMenu() const OVERRIDE; +#endif +}; + +#ifdef CLIENT_DLL + +extern ConVar tf_build_menu_controller_mode; + +#endif +class CTFWeaponPDA_Engineer_Destroy : public CTFWeaponPDA +{ +public: + DECLARE_CLASS( CTFWeaponPDA_Engineer_Destroy, CTFWeaponPDA ); + DECLARE_NETWORKCLASS(); + DECLARE_PREDICTABLE(); + + virtual const char *GetPanelName() { return ""; } + virtual int GetWeaponID( void ) const { return TF_WEAPON_PDA_ENGINEER_DESTROY; } +#ifdef CLIENT_DLL + virtual CHudBaseBuildMenu *GetBuildMenu() const OVERRIDE; +#endif + + virtual bool VisibleInWeaponSelection( void ); +}; + +class CTFWeaponPDA_Spy : public CTFWeaponPDA +{ +public: + DECLARE_CLASS( CTFWeaponPDA_Spy, CTFWeaponPDA ); + DECLARE_NETWORKCLASS(); + DECLARE_PREDICTABLE(); + + virtual const char *GetPanelName() { return ""; } + virtual int GetWeaponID( void ) const { return TF_WEAPON_PDA_SPY; } +#ifdef CLIENT_DLL + virtual CHudBaseBuildMenu *GetBuildMenu() const OVERRIDE; + virtual bool Deploy( void ); +#endif + + virtual bool CanBeSelected( void ) OVERRIDE; + virtual bool VisibleInWeaponSelection( void ) OVERRIDE; + + virtual void ItemPreFrame( void ); // called each frame by the player PreThink + virtual void ItemBusyFrame( void ); // called each frame by the player PostThink + virtual void ItemHolsterFrame( void ); // called each frame by the player PreThink, if the weapon is holstered + + void CheckDisguiseTimer( void ); + void ProcessDisguiseImpulse( void ); +}; + +// ******************************************************************************************** +// PDA Expansion Slots +class CTFWeaponPDAExpansion_Dispenser : public CTFWearable +{ + DECLARE_CLASS( CTFWeaponPDAExpansion_Dispenser, CTFWearable ); + +public: + DECLARE_NETWORKCLASS(); + DECLARE_DATADESC(); + + virtual void Equip( CBasePlayer *pOwner ); + virtual void UnEquip( CBasePlayer *pOwner ); +}; + +class CTFWeaponPDAExpansion_Teleporter : public CTFWearable +{ + DECLARE_CLASS( CTFWeaponPDAExpansion_Teleporter, CTFWearable ); + +public: + DECLARE_NETWORKCLASS(); + DECLARE_DATADESC(); + + virtual void Equip( CBasePlayer *pOwner ); + virtual void UnEquip( CBasePlayer *pOwner ); +}; + +#ifdef STAGING_ONLY +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +class CTFWeaponPDA_Spy_Build : public CTFWeaponPDA +{ +public: + DECLARE_CLASS( CTFWeaponPDA_Spy_Build, CTFWeaponPDA ); + DECLARE_NETWORKCLASS(); + DECLARE_PREDICTABLE(); + + virtual bool CanDeploy( void ) OVERRIDE; + virtual const char *GetPanelName() { return ""; } + virtual int GetWeaponID( void ) const { return TF_WEAPON_PDA_SPY_BUILD; } + virtual bool VisibleInWeaponSelection( void ) OVERRIDE; +#ifdef CLIENT_DLL + virtual CHudBaseBuildMenu *GetBuildMenu() const OVERRIDE; +#endif + + float GetProgress( void ); + int GetCount( void ); + const char* GetEffectLabelText( void ) { return "#TF_Traps"; } +}; +#endif + +#endif // TF_WEAPON_PDA_H
\ No newline at end of file |