ddnet/src/game/server/teams.h

79 lines
1.7 KiB
C
Raw Normal View History

2010-08-28 13:47:52 +00:00
#ifndef GAME_SERVER_TEAMS_H
#define GAME_SERVER_TEAMS_H
#include <game/teamscore.h>
2010-08-28 13:47:52 +00:00
#include <game/server/gamecontext.h>
class CGameTeams
{
2010-08-28 13:47:52 +00:00
int m_TeamState[MAX_CLIENTS];
2010-11-06 22:54:35 +00:00
int m_MembersCount[MAX_CLIENTS];
2010-08-28 13:47:52 +00:00
bool m_TeeFinished[MAX_CLIENTS];
int m_TeamLeader[MAX_CLIENTS];
int m_TeeJoinTick[MAX_CLIENTS];
2011-02-14 21:34:46 +00:00
bool m_TeamStrict[MAX_CLIENTS];
bool m_TeePassedStart[MAX_CLIENTS];
class CGameContext * m_pGameContext;
2010-08-28 13:47:52 +00:00
2010-11-06 22:54:35 +00:00
2010-08-28 13:47:52 +00:00
public:
enum TeamState
{
TEAMSTATE_EMPTY,
TEAMSTATE_OPEN,
TEAMSTATE_STARTED
2010-08-28 13:47:52 +00:00
};
CTeamsCore m_Core;
CGameTeams(CGameContext *pGameContext);
2010-08-28 13:47:52 +00:00
//helper methods
CCharacter* Character(int ClientID) { return GameServer()->GetPlayerChar(ClientID); }
class CGameContext *GameServer() { return m_pGameContext; }
class IServer *Server() { return m_pGameContext->Server(); }
2010-08-28 13:47:52 +00:00
void OnCharacterStart(int ClientID);
void OnCharacterFinish(int ClientID);
void OnCharacterDeath(int ClientID);
2010-08-28 13:47:52 +00:00
int SetCharacterTeam(int ClientID, int Team);
enum TeamErrors
{
ERROR_WRONG_PARAMS = -6,
ERROR_CLOSED,
ERROR_ALREADY_THERE,
ERROR_NOT_SUPER,
ERROR_STARTED,
ERROR_PASSEDSTART
};
2010-08-28 13:47:52 +00:00
void ChangeTeamState(int Team, int State) { m_TeamState[Team] = State; };
2010-08-28 13:47:52 +00:00
bool TeamFinished(int Team);
2011-01-26 20:57:23 +00:00
int TeamMask(int Team, int ExceptID = -1);
2010-11-06 22:54:35 +00:00
int Count(int Team) const;
//need to be very careful using this method
void SetForceCharacterTeam(int ClientID, int Team);
void Reset();
void SendTeamsState(int ClientID);
int m_LastChat[MAX_CLIENTS];
bool GetTeamState(int Team) { return m_TeamState[Team]; };
int GetTeamLeader(int Team) { return m_TeamLeader[Team]; };
void SetTeamLeader(int Team, int ClientID);
2011-02-16 08:17:47 +00:00
void ToggleStrictness(int Team);
2010-08-28 13:47:52 +00:00
};
#endif