//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: Client side CTFTeam class
//
// $NoKeywords: $
//=============================================================================//

#ifndef C_DOD_TEAM_H
#define C_DOD_TEAM_H
#ifdef _WIN32
#pragma once
#endif

#include "c_team.h"
#include "shareddefs.h"
#include "dod_playerclass_info_parse.h"
#include "dod_shareddefs.h"

class C_BaseEntity;
class C_BaseObject;
class CBaseTechnology;

//-----------------------------------------------------------------------------
// Purpose: TF's Team manager
//-----------------------------------------------------------------------------
class C_DODTeam : public C_Team
{
	DECLARE_CLASS( C_DODTeam, C_Team );
public:
	DECLARE_CLIENTCLASS();

					C_DODTeam();
	virtual			~C_DODTeam();

	CDODPlayerClassInfo const &GetPlayerClassInfo( int iPlayerClass ) const;
	const unsigned char *GetEncryptionKey( void ) { return g_pGameRules->GetEncryptionKey(); }

	virtual void AddPlayerClass( const char *pszClassName );

	bool IsClassOnTeam( const char *pszClassName, int &iClassNum ) const;
	bool IsClassOnTeam( int iClassNum ) const;
	int GetNumPlayerClasses( void ) { return m_hPlayerClassInfoHandles.Count(); }

	int CountPlayersOfThisClass( int iPlayerClass );

private:
	CUtlVector < PLAYERCLASS_FILE_INFO_HANDLE >		m_hPlayerClassInfoHandles;
};

class C_DODTeam_Allies : public C_DODTeam
{
	DECLARE_CLASS( C_DODTeam_Allies, C_DODTeam );
public:
	DECLARE_CLIENTCLASS();

				     C_DODTeam_Allies();
	 virtual		~C_DODTeam_Allies() {}
};

class C_DODTeam_Axis : public C_DODTeam
{
	DECLARE_CLASS( C_DODTeam_Axis, C_DODTeam );
public:
	DECLARE_CLIENTCLASS();

					 C_DODTeam_Axis();
	virtual			~C_DODTeam_Axis() {}
};

#endif // C_DOD_TEAM_H