summaryrefslogtreecommitdiff
path: root/game/shared/tf/tf_weapon_pda.h
blob: 914af8a382847244b0954757a5472f67b3d5d399 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
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