summaryrefslogtreecommitdiff
path: root/game/server/hl1/hl1mp_player.h
blob: 5ada43f0feb64f665b68297f0de0d5d18ebc8753 (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
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
// $NoKeywords: $
//
//=============================================================================// 

#ifndef HL1MP_PLAYER_H
#define HL1MP_PLAYER_H
#pragma once

#include "cbase.h"
#include "hl1_player_shared.h"
#include "hl1_player.h"
#include "takedamageinfo.h"


class CHL1MP_Player;


//=============================================================================
// >> HL1MP_Player
//=============================================================================
class CHL1MP_Player : public CHL1_Player
{
public:
	DECLARE_CLASS( CHL1MP_Player, CHL1_Player );
	DECLARE_SERVERCLASS();
    
	CHL1MP_Player();
	~CHL1MP_Player( void );
	
    virtual void Event_Killed( const CTakeDamageInfo &info );
    virtual void Spawn( void );
    virtual void PostThink( void );
    virtual void SetAnimation( PLAYER_ANIM playerAnim );
    void GiveDefaultItems( void );
    void CreateRagdollEntity( void );
    void UpdateOnRemove( void );
    virtual bool BecomeRagdollOnClient( const Vector &force ) { return true; };
    virtual void CreateCorpse( void );

	virtual bool BumpWeapon( CBaseCombatWeapon *pWeapon );

	virtual void ChangeTeam( int iTeamNum ) OVERRIDE;

	void SetPlayerTeamModel( void );

	float GetNextModelChangeTime( void ) { return m_flNextModelChangeTime; }
	float GetNextTeamChangeTime( void ) { return m_flNextTeamChangeTime; }

    void SetPlayerModel( void );

	void DoAnimationEvent( PlayerAnimEvent_t event, int nData = 0 );

	virtual bool StartObserverMode (int mode) 
	{
		if ( !IsHLTV() )
			return false;	
		return BaseClass::StartObserverMode( mode );	
	}

	void DetonateSatchelCharges( void );

	CNetworkVar( int, m_iRealSequence );

private:
    CNetworkHandle( CBaseEntity, m_hRagdoll );
	CNetworkVar( int, m_iSpawnInterpCounter );
	CNetworkQAngle( m_angEyeAngles );

    IHL1MPPlayerAnimState*		m_PlayerAnimState;
	float						m_flNextModelChangeTime;
	float						m_flNextTeamChangeTime;
};

inline CHL1MP_Player *ToHL1MPPlayer( CBaseEntity *pEntity )
{
	if ( !pEntity || !pEntity->IsPlayer() )
		return NULL;

	return dynamic_cast<CHL1MP_Player*>( pEntity );
}


#endif //HL1MP_PLAYER_H