summaryrefslogtreecommitdiff
path: root/game/shared/tf/tf_weapon_pda.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/shared/tf/tf_weapon_pda.h')
-rw-r--r--game/shared/tf/tf_weapon_pda.h192
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