Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

126 lines
3.4 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. //=============================================================================
  4. #ifndef TF_TEAM_H
  5. #define TF_TEAM_H
  6. #ifdef _WIN32
  7. #pragma once
  8. #endif
  9. #include "utlvector.h"
  10. #include "team.h"
  11. #include "tf_shareddefs.h"
  12. class CBaseObject;
  13. //=============================================================================
  14. // TF Teams.
  15. //
  16. class CTFTeam : public CTeam
  17. {
  18. DECLARE_CLASS( CTFTeam, CTeam );
  19. DECLARE_SERVERCLASS();
  20. public:
  21. CTFTeam();
  22. // Classes.
  23. // int GetNumOfClass( TFClass iClass );
  24. // CTeam
  25. virtual void AddPlayer( CBasePlayer *pPlayer );
  26. virtual void RemovePlayer( CBasePlayer *pPlayer );
  27. // TF Teams.
  28. // CTFTeam *GetEnemyTeam();
  29. void SetColor( color32 color );
  30. color32 GetColor( void );
  31. // Score.
  32. void ShowScore( CBasePlayer *pPlayer );
  33. // Objects.
  34. void AddObject( CBaseObject *pObject );
  35. void RemoveObject( CBaseObject *pObject );
  36. bool IsObjectOnTeam( CBaseObject *pObject ) const;
  37. int GetNumObjects( int iObjectType = -1 );
  38. CBaseObject *GetObject( int num );
  39. // Flag Captures
  40. int GetFlagCaptures( void ) { return m_nFlagCaptures; }
  41. int GetTotalFlagCaptures( void ) const { return m_nTotalFlagCaptures; }
  42. void SetFlagCaptures( int nCaptures ) { m_nFlagCaptures = nCaptures; }
  43. void IncrementFlagCaptures( void ) { m_nFlagCaptures++; m_nTotalFlagCaptures++; }
  44. // Roles
  45. void SetRole( int iTeamRole ) { m_iRole = iTeamRole; }
  46. int GetRole( void ) { return m_iRole; }
  47. // KOTH Timers
  48. void AddKOTHTime( int nTime ) { m_flTotalSecondsKOTHPointOwned += nTime; }
  49. float GetKOTHTime() const { return m_flTotalSecondsKOTHPointOwned; }
  50. // PLR Track
  51. void AddPLRTrack( float flPercentTraveled ) { m_flTotalPLRTrackPercentTraveled += flPercentTraveled; }
  52. float GetTotalPLRTrackPercentTraveled() const { return m_flTotalPLRTrackPercentTraveled; }
  53. bool SetTeamLeader( CBasePlayer *pPlayer );
  54. CBasePlayer *GetTeamLeader( void );
  55. private:
  56. color32 m_TeamColor;
  57. CUtlVector< CHandle<CBaseObject> > m_aObjects; // List of team objects.
  58. CNetworkVar( int, m_nFlagCaptures );
  59. CNetworkVar( int, m_iRole );
  60. int m_nTotalFlagCaptures;
  61. float m_flTotalSecondsKOTHPointOwned;
  62. float m_flTotalPLRTrackPercentTraveled;
  63. CNetworkHandle( CBasePlayer, m_hLeader );
  64. };
  65. class CTFTeamManager
  66. {
  67. public:
  68. CTFTeamManager();
  69. // Creation/Destruction.
  70. bool Init( void );
  71. void Shutdown( void );
  72. bool IsValidTeam( int iTeam );
  73. int GetTeamCount( void );
  74. CTFTeam *GetTeam( int iTeam );
  75. CTFTeam *GetSpectatorTeam();
  76. color32 GetUndefinedTeamColor( void );
  77. void AddTeamScore( int iTeam, int iScoreToAdd );
  78. void IncrementFlagCaptures( int iTeam );
  79. int GetFlagCaptures( int iTeam );
  80. // Screen prints.
  81. void PlayerCenterPrint( CBasePlayer *pPlayer, const char *msg_name, const char *param1 = NULL, const char *param2 = NULL, const char *param3 = NULL, const char *param4 = NULL );
  82. void TeamCenterPrint( int iTeam, const char *msg_name, const char *param1 = NULL, const char *param2 = NULL, const char *param3 = NULL, const char *param4 = NULL );
  83. void PlayerTeamCenterPrint( CBasePlayer *pPlayer, const char *msg_name, const char *param1 = NULL, const char *param2 = NULL, const char *param3 = NULL, const char *param4 = NULL );
  84. // Vox
  85. private:
  86. int Create( const char *pName, color32 color );
  87. private:
  88. color32 m_UndefinedTeamColor;
  89. };
  90. extern CTFTeamManager *TFTeamMgr();
  91. extern CTFTeam *GetGlobalTFTeam( int iIndex );
  92. #endif // TF_TEAM_H