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
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
//=============================================================================
#ifndef TF_TEAM_H
#define TF_TEAM_H
#ifdef _WIN32
#pragma once
#endif
#include "utlvector.h"
#include "team.h"
#include "tf_shareddefs.h"
class CBaseObject;
//=============================================================================
// TF Teams.
//
class CTFTeam : public CTeam
{
DECLARE_CLASS( CTFTeam, CTeam );
DECLARE_SERVERCLASS();
public:
CTFTeam();
// Classes.
// int GetNumOfClass( TFClass iClass );
// CTeam
virtual void AddPlayer( CBasePlayer *pPlayer );
virtual void RemovePlayer( CBasePlayer *pPlayer );
// TF Teams.
// CTFTeam *GetEnemyTeam();
void SetColor( color32 color );
color32 GetColor( void );
// Score.
void ShowScore( CBasePlayer *pPlayer );
// Objects.
void AddObject( CBaseObject *pObject );
void RemoveObject( CBaseObject *pObject );
bool IsObjectOnTeam( CBaseObject *pObject ) const;
int GetNumObjects( int iObjectType = -1 );
CBaseObject *GetObject( int num );
// Flag Captures
int GetFlagCaptures( void ) { return m_nFlagCaptures; }
int GetTotalFlagCaptures( void ) const { return m_nTotalFlagCaptures; }
void SetFlagCaptures( int nCaptures ) { m_nFlagCaptures = nCaptures; }
void IncrementFlagCaptures( void ) { m_nFlagCaptures++; m_nTotalFlagCaptures++; }
// Roles
void SetRole( int iTeamRole ) { m_iRole = iTeamRole; }
int GetRole( void ) { return m_iRole; }
// KOTH Timers
void AddKOTHTime( int nTime ) { m_flTotalSecondsKOTHPointOwned += nTime; }
float GetKOTHTime() const { return m_flTotalSecondsKOTHPointOwned; }
// PLR Track
void AddPLRTrack( float flPercentTraveled ) { m_flTotalPLRTrackPercentTraveled += flPercentTraveled; }
float GetTotalPLRTrackPercentTraveled() const { return m_flTotalPLRTrackPercentTraveled; }
bool SetTeamLeader( CBasePlayer *pPlayer );
CBasePlayer *GetTeamLeader( void );
private:
color32 m_TeamColor;
CUtlVector< CHandle<CBaseObject> > m_aObjects; // List of team objects.
CNetworkVar( int, m_nFlagCaptures );
CNetworkVar( int, m_iRole );
int m_nTotalFlagCaptures;
float m_flTotalSecondsKOTHPointOwned;
float m_flTotalPLRTrackPercentTraveled;
CNetworkHandle( CBasePlayer, m_hLeader );
};
class CTFTeamManager
{
public:
CTFTeamManager();
// Creation/Destruction.
bool Init( void );
void Shutdown( void );
bool IsValidTeam( int iTeam );
int GetTeamCount( void );
CTFTeam *GetTeam( int iTeam );
CTFTeam *GetSpectatorTeam();
color32 GetUndefinedTeamColor( void );
void AddTeamScore( int iTeam, int iScoreToAdd );
void IncrementFlagCaptures( int iTeam );
int GetFlagCaptures( int iTeam );
// Screen prints.
void PlayerCenterPrint( CBasePlayer *pPlayer, const char *msg_name, const char *param1 = NULL, const char *param2 = NULL, const char *param3 = NULL, const char *param4 = NULL );
void TeamCenterPrint( int iTeam, const char *msg_name, const char *param1 = NULL, const char *param2 = NULL, const char *param3 = NULL, const char *param4 = NULL );
void PlayerTeamCenterPrint( CBasePlayer *pPlayer, const char *msg_name, const char *param1 = NULL, const char *param2 = NULL, const char *param3 = NULL, const char *param4 = NULL );
// Vox
private:
int Create( const char *pName, color32 color );
private:
color32 m_UndefinedTeamColor;
};
extern CTFTeamManager *TFTeamMgr();
extern CTFTeam *GetGlobalTFTeam( int iIndex );
#endif // TF_TEAM_H
|