summaryrefslogtreecommitdiff
path: root/game/server/tf/entity_tfstart.h
blob: 7de1f423432381e8d6873cd807e4eceeb0f85dbc (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
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: CTF Spawn Point.
//
//=============================================================================//
#ifndef ENTITY_TFSTART_H
#define ENTITY_TFSTART_H

#ifdef _WIN32
#pragma once
#endif

class CTeamControlPoint;
class CTeamControlPointRound;

//=============================================================================
//
// TF team spawning entity.
//

enum PlayerTeamSpawnMode_t
{
	PlayerTeamSpawnMode_Normal = 0,
	PlayerTeamSpawnMode_Triggered = 1,
};

enum PlayerTeamSpawn_MatchSummary_t
{
	PlayerTeamSpawn_MatchSummary_None = 0,
	PlayerTeamSpawn_MatchSummary_Loser = 1,
	PlayerTeamSpawn_MatchSummary_Winner = 2,
};

DECLARE_AUTO_LIST( ITFTeamSpawnAutoList );

class CTFTeamSpawn : public CPointEntity, public ITFTeamSpawnAutoList
{
public:
	DECLARE_CLASS( CTFTeamSpawn, CPointEntity );

	CTFTeamSpawn();

	void Activate( void );

	bool IsDisabled( void ) { return m_bDisabled; }
	void SetDisabled( bool bDisabled ) { m_bDisabled = bDisabled; }

	PlayerTeamSpawnMode_t GetTeamSpawnMode( void ) { return m_nSpawnMode; }

	// Inputs/Outputs.
	void InputEnable( inputdata_t &inputdata );
	void InputDisable( inputdata_t &inputdata );
	void InputRoundSpawn( inputdata_t &inputdata );

	int DrawDebugTextOverlays(void);

	CHandle<CTeamControlPoint> GetControlPoint( void ) { return m_hControlPoint; }
	CHandle<CTeamControlPointRound> GetRoundBlueSpawn( void ) { return m_hRoundBlueSpawn; }
	CHandle<CTeamControlPointRound> GetRoundRedSpawn( void ) { return m_hRoundRedSpawn; }

	PlayerTeamSpawn_MatchSummary_t GetMatchSummaryType( void ){ return m_nMatchSummaryType; }
	bool AlreadyUsedForMatchSummary( void ){ return m_bAlreadyUsedForMatchSummary; }
	void SetAlreadyUsedForMatchSummary( void ){ m_bAlreadyUsedForMatchSummary = true; }

private:
	bool							m_bDisabled;		// Enabled/Disabled?
	PlayerTeamSpawnMode_t			m_nSpawnMode;		// How are players allowed to spawn here?

	string_t						m_iszControlPointName;
	string_t						m_iszRoundBlueSpawn;
	string_t						m_iszRoundRedSpawn;

	CHandle<CTeamControlPoint>		m_hControlPoint;
	CHandle<CTeamControlPointRound>	m_hRoundBlueSpawn;
	CHandle<CTeamControlPointRound>	m_hRoundRedSpawn;

	PlayerTeamSpawn_MatchSummary_t	m_nMatchSummaryType;		// is this a spawn location for a match summary?
	bool m_bAlreadyUsedForMatchSummary;

	DECLARE_DATADESC();
};

#endif // ENTITY_TFSTART_H