mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 01:58:19 +00:00
added constants for teams by Choupom
This commit is contained in:
parent
b29b6d0bcf
commit
a72848e780
|
@ -14,7 +14,14 @@ RawHeader = '''
|
|||
|
||||
enum
|
||||
{
|
||||
INPUT_STATE_MASK=0x3f,
|
||||
INPUT_STATE_MASK=0x3f
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
TEAM_SPECTATORS=-1,
|
||||
TEAM_RED,
|
||||
TEAM_BLUE
|
||||
};
|
||||
'''
|
||||
|
||||
|
@ -83,7 +90,7 @@ Objects = [
|
|||
NetIntAny("m_X"),
|
||||
NetIntAny("m_Y"),
|
||||
|
||||
NetIntRange("m_Team", 0, 1),
|
||||
NetIntRange("m_Team", 'TEAM_RED', 'TEAM_BLUE'),
|
||||
NetIntRange("m_CarriedBy", -2, 'MAX_CLIENTS-1')
|
||||
]),
|
||||
|
||||
|
@ -141,7 +148,7 @@ Objects = [
|
|||
NetObject("PlayerInfo", [
|
||||
NetIntRange("m_Local", 0, 1),
|
||||
NetIntRange("m_ClientId", 0, 'MAX_CLIENTS-1'),
|
||||
NetIntRange("m_Team", -1, 1),
|
||||
NetIntRange("m_Team", 'TEAM_SPECTATORS', 'TEAM_BLUE'),
|
||||
|
||||
NetIntAny("m_Score"),
|
||||
NetIntAny("m_Latency"),
|
||||
|
@ -204,7 +211,7 @@ Messages = [
|
|||
]),
|
||||
|
||||
NetMessage("Sv_Chat", [
|
||||
NetIntRange("m_Team", -1, 1),
|
||||
NetIntRange("m_Team", 'TEAM_SPECTATORS', 'TEAM_BLUE'),
|
||||
NetIntRange("m_Cid", -1, 'MAX_CLIENTS-1'),
|
||||
NetString("m_pMessage"),
|
||||
]),
|
||||
|
@ -260,7 +267,7 @@ Messages = [
|
|||
]),
|
||||
|
||||
NetMessage("Cl_SetTeam", [
|
||||
NetIntRange("m_Team", -1, 1),
|
||||
NetIntRange("m_Team", 'TEAM_SPECTATORS', 'TEAM_BLUE'),
|
||||
]),
|
||||
|
||||
NetMessage("Cl_StartInfo", [
|
||||
|
|
|
@ -32,6 +32,6 @@ for filename in sys.argv[1:]:
|
|||
hash = hashlib.md5(f).hexdigest().lower()[16:]
|
||||
# TODO: refactor hash that is equal to the 0.5 hash, remove when we
|
||||
# TODO: remove when we don't need it any more
|
||||
if hash == "7e33344691ca8a61":
|
||||
if hash == "026b8eceb4cdd369":
|
||||
hash = "b67d1f1a1eea234e"
|
||||
print '#define GAME_NETVERSION_HASH "%s"' % hash
|
||||
|
|
|
@ -231,15 +231,15 @@ void CChat::AddLine(int ClientId, int Team, const char *pLine)
|
|||
}
|
||||
else
|
||||
{
|
||||
if(m_pClient->m_aClients[ClientId].m_Team == -1)
|
||||
m_aLines[m_CurrentLine].m_NameColor = -1;
|
||||
if(m_pClient->m_aClients[ClientId].m_Team == TEAM_SPECTATORS)
|
||||
m_aLines[m_CurrentLine].m_NameColor = TEAM_SPECTATORS;
|
||||
|
||||
if(m_pClient->m_Snap.m_pGameobj && m_pClient->m_Snap.m_pGameobj->m_Flags&GAMEFLAG_TEAMS)
|
||||
{
|
||||
if(m_pClient->m_aClients[ClientId].m_Team == 0)
|
||||
m_aLines[m_CurrentLine].m_NameColor = 0;
|
||||
else if(m_pClient->m_aClients[ClientId].m_Team == 1)
|
||||
m_aLines[m_CurrentLine].m_NameColor = 1;
|
||||
if(m_pClient->m_aClients[ClientId].m_Team == TEAM_RED)
|
||||
m_aLines[m_CurrentLine].m_NameColor = TEAM_RED;
|
||||
else if(m_pClient->m_aClients[ClientId].m_Team == TEAM_BLUE)
|
||||
m_aLines[m_CurrentLine].m_NameColor = TEAM_BLUE;
|
||||
}
|
||||
|
||||
str_copy(m_aLines[m_CurrentLine].m_aName, m_pClient->m_aClients[ClientId].m_aName, sizeof(m_aLines[m_CurrentLine].m_aName));
|
||||
|
@ -353,11 +353,11 @@ void CChat::OnRender()
|
|||
TextRender()->TextColor(1.0f, 1.0f, 0.5f, Blend); // system
|
||||
else if(m_aLines[r].m_Team)
|
||||
TextRender()->TextColor(0.45f, 0.9f, 0.45f, Blend); // team message
|
||||
else if(m_aLines[r].m_NameColor == 0)
|
||||
else if(m_aLines[r].m_NameColor == TEAM_RED)
|
||||
TextRender()->TextColor(1.0f, 0.5f, 0.5f, Blend); // red
|
||||
else if(m_aLines[r].m_NameColor == 1)
|
||||
else if(m_aLines[r].m_NameColor == TEAM_BLUE)
|
||||
TextRender()->TextColor(0.7f, 0.7f, 1.0f, Blend); // blue
|
||||
else if(m_aLines[r].m_NameColor == -1)
|
||||
else if(m_aLines[r].m_NameColor == TEAM_SPECTATORS)
|
||||
TextRender()->TextColor(0.75f, 0.5f, 0.75f, Blend); // spectator
|
||||
else
|
||||
TextRender()->TextColor(0.8f, 0.8f, 0.8f, Blend);
|
||||
|
|
|
@ -74,10 +74,10 @@ void CHud::RenderScoreHud()
|
|||
if(!(m_pClient->m_Snap.m_pGameobj && m_pClient->m_Snap.m_pGameobj->m_GameOver) && (GameFlags&GAMEFLAG_TEAMS))
|
||||
{
|
||||
char aScoreTeam[2][32];
|
||||
str_format(aScoreTeam[0], sizeof(aScoreTeam)/2, "%d", m_pClient->m_Snap.m_pGameobj->m_TeamscoreRed);
|
||||
str_format(aScoreTeam[1], sizeof(aScoreTeam)/2, "%d", m_pClient->m_Snap.m_pGameobj->m_TeamscoreBlue);
|
||||
float aScoreTeamWidth[2] = {TextRender()->TextWidth(0, 14.0f, aScoreTeam[0], -1), TextRender()->TextWidth(0, 14.0f, aScoreTeam[1], -1)};
|
||||
float ScoreWidthMax = max(max(aScoreTeamWidth[0], aScoreTeamWidth[1]), TextRender()->TextWidth(0, 14.0f, "100", -1));
|
||||
str_format(aScoreTeam[TEAM_RED], sizeof(aScoreTeam)/2, "%d", m_pClient->m_Snap.m_pGameobj->m_TeamscoreRed);
|
||||
str_format(aScoreTeam[TEAM_BLUE], sizeof(aScoreTeam)/2, "%d", m_pClient->m_Snap.m_pGameobj->m_TeamscoreBlue);
|
||||
float aScoreTeamWidth[2] = {TextRender()->TextWidth(0, 14.0f, aScoreTeam[TEAM_RED], -1), TextRender()->TextWidth(0, 14.0f, aScoreTeam[TEAM_BLUE], -1)};
|
||||
float ScoreWidthMax = max(max(aScoreTeamWidth[TEAM_RED], aScoreTeamWidth[TEAM_BLUE]), TextRender()->TextWidth(0, 14.0f, "100", -1));
|
||||
float Split = 3.0f;
|
||||
float ImageSize = GameFlags&GAMEFLAG_FLAGS ? 16.0f : Split;
|
||||
|
||||
|
@ -186,7 +186,7 @@ void CHud::RenderTeambalanceWarning()
|
|||
bool Flash = time_get()/(time_freq()/2)%2 == 0;
|
||||
if (m_pClient->m_Snap.m_pGameobj && (m_pClient->m_Snap.m_pGameobj->m_Flags&GAMEFLAG_TEAMS) != 0)
|
||||
{
|
||||
int TeamDiff = m_pClient->m_Snap.m_aTeamSize[0]-m_pClient->m_Snap.m_aTeamSize[1];
|
||||
int TeamDiff = m_pClient->m_Snap.m_aTeamSize[TEAM_RED]-m_pClient->m_Snap.m_aTeamSize[TEAM_BLUE];
|
||||
if (g_Config.m_ClWarningTeambalance && (TeamDiff >= 2 || TeamDiff <= -2))
|
||||
{
|
||||
const char *pText = Localize("Please balance teams!");
|
||||
|
@ -317,7 +317,7 @@ void CHud::OnRender()
|
|||
m_Width = 300*Graphics()->ScreenAspect();
|
||||
|
||||
bool Spectate = false;
|
||||
if(m_pClient->m_Snap.m_pLocalInfo && m_pClient->m_Snap.m_pLocalInfo->m_Team == -1)
|
||||
if(m_pClient->m_Snap.m_pLocalInfo && m_pClient->m_Snap.m_pLocalInfo->m_Team == TEAM_SPECTATORS)
|
||||
Spectate = true;
|
||||
|
||||
if(m_pClient->m_Snap.m_pLocalCharacter && !Spectate && !(m_pClient->m_Snap.m_pGameobj && m_pClient->m_Snap.m_pGameobj->m_GameOver))
|
||||
|
|
|
@ -161,7 +161,7 @@ void CItems::RenderFlag(const CNetObj_Flag *pPrev, const CNetObj_Flag *pCurrent)
|
|||
Graphics()->TextureSet(g_pData->m_aImages[IMAGE_GAME].m_Id);
|
||||
Graphics()->QuadsBegin();
|
||||
|
||||
if(pCurrent->m_Team == 0) // red team
|
||||
if(pCurrent->m_Team == TEAM_RED)
|
||||
RenderTools()->SelectSprite(SPRITE_FLAG_RED);
|
||||
else
|
||||
RenderTools()->SelectSprite(SPRITE_FLAG_BLUE);
|
||||
|
|
|
@ -78,7 +78,7 @@ void CKillMessages::OnRender()
|
|||
Graphics()->TextureSet(g_pData->m_aImages[IMAGE_GAME].m_Id);
|
||||
Graphics()->QuadsBegin();
|
||||
|
||||
if(m_aKillmsgs[r].m_VictimTeam == 0)
|
||||
if(m_aKillmsgs[r].m_VictimTeam == TEAM_RED)
|
||||
RenderTools()->SelectSprite(SPRITE_FLAG_BLUE);
|
||||
else
|
||||
RenderTools()->SelectSprite(SPRITE_FLAG_RED);
|
||||
|
@ -115,7 +115,7 @@ void CKillMessages::OnRender()
|
|||
Graphics()->TextureSet(g_pData->m_aImages[IMAGE_GAME].m_Id);
|
||||
Graphics()->QuadsBegin();
|
||||
|
||||
if(m_aKillmsgs[r].m_KillerTeam == 0)
|
||||
if(m_aKillmsgs[r].m_KillerTeam == TEAM_RED)
|
||||
RenderTools()->SelectSprite(SPRITE_FLAG_BLUE, SPRITE_FLAG_FLIP_X);
|
||||
else
|
||||
RenderTools()->SelectSprite(SPRITE_FLAG_RED, SPRITE_FLAG_FLIP_X);
|
||||
|
|
|
@ -37,40 +37,40 @@ void CMenus::RenderGame(CUIRect MainView)
|
|||
|
||||
if(m_pClient->m_Snap.m_pLocalInfo && m_pClient->m_Snap.m_pGameobj)
|
||||
{
|
||||
if(m_pClient->m_Snap.m_pLocalInfo->m_Team != -1)
|
||||
if(m_pClient->m_Snap.m_pLocalInfo->m_Team != TEAM_SPECTATORS)
|
||||
{
|
||||
MainView.VSplitLeft(10.0f, &Button, &MainView);
|
||||
MainView.VSplitLeft(120.0f, &Button, &MainView);
|
||||
static int s_SpectateButton = 0;
|
||||
if(DoButton_Menu(&s_SpectateButton, Localize("Spectate"), 0, &Button))
|
||||
{
|
||||
m_pClient->SendSwitchTeam(-1);
|
||||
m_pClient->SendSwitchTeam(TEAM_SPECTATORS);
|
||||
SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
if(m_pClient->m_Snap.m_pGameobj->m_Flags & GAMEFLAG_TEAMS)
|
||||
{
|
||||
if(m_pClient->m_Snap.m_pLocalInfo->m_Team != 0)
|
||||
if(m_pClient->m_Snap.m_pLocalInfo->m_Team != TEAM_RED)
|
||||
{
|
||||
MainView.VSplitLeft(10.0f, &Button, &MainView);
|
||||
MainView.VSplitLeft(120.0f, &Button, &MainView);
|
||||
static int s_SpectateButton = 0;
|
||||
if(DoButton_Menu(&s_SpectateButton, Localize("Join red"), 0, &Button))
|
||||
{
|
||||
m_pClient->SendSwitchTeam(0);
|
||||
m_pClient->SendSwitchTeam(TEAM_RED);
|
||||
SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
if(m_pClient->m_Snap.m_pLocalInfo->m_Team != 1)
|
||||
if(m_pClient->m_Snap.m_pLocalInfo->m_Team != TEAM_BLUE)
|
||||
{
|
||||
MainView.VSplitLeft(10.0f, &Button, &MainView);
|
||||
MainView.VSplitLeft(120.0f, &Button, &MainView);
|
||||
static int s_SpectateButton = 0;
|
||||
if(DoButton_Menu(&s_SpectateButton, Localize("Join blue"), 0, &Button))
|
||||
{
|
||||
m_pClient->SendSwitchTeam(1);
|
||||
m_pClient->SendSwitchTeam(TEAM_BLUE);
|
||||
SetActive(false);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -104,7 +104,7 @@ void CScoreboard::RenderSpectators(float x, float y, float w)
|
|||
if(Item.m_Type == NETOBJTYPE_PLAYERINFO)
|
||||
{
|
||||
const CNetObj_PlayerInfo *pInfo = (const CNetObj_PlayerInfo *)pData;
|
||||
if(pInfo->m_Team == -1)
|
||||
if(pInfo->m_Team == TEAM_SPECTATORS)
|
||||
{
|
||||
if(Count)
|
||||
str_append(aBuffer, ", ", sizeof(aBuffer));
|
||||
|
@ -140,7 +140,7 @@ void CScoreboard::RenderScoreboard(float x, float y, float w, int Team, const ch
|
|||
|
||||
float tw = TextRender()->TextWidth(0, 48, pTitle, -1);
|
||||
|
||||
if(Team == -1)
|
||||
if(Team == TEAM_SPECTATORS)
|
||||
{
|
||||
TextRender()->Text(0, x+w/2-tw/2, y, 48, pTitle, -1);
|
||||
}
|
||||
|
@ -151,7 +151,7 @@ void CScoreboard::RenderScoreboard(float x, float y, float w, int Team, const ch
|
|||
if(m_pClient->m_Snap.m_pGameobj)
|
||||
{
|
||||
char aBuf[128];
|
||||
int Score = Team ? m_pClient->m_Snap.m_pGameobj->m_TeamscoreBlue : m_pClient->m_Snap.m_pGameobj->m_TeamscoreRed;
|
||||
int Score = Team == TEAM_RED ? m_pClient->m_Snap.m_pGameobj->m_TeamscoreRed : m_pClient->m_Snap.m_pGameobj->m_TeamscoreBlue;
|
||||
str_format(aBuf, sizeof(aBuf), "%d", Score);
|
||||
tw = TextRender()->TextWidth(0, 48, aBuf, -1);
|
||||
TextRender()->Text(0, x+w-tw-30, y, 48, aBuf, -1);
|
||||
|
@ -259,7 +259,7 @@ void CScoreboard::RenderScoreboard(float x, float y, float w, int Team, const ch
|
|||
Graphics()->TextureSet(g_pData->m_aImages[IMAGE_GAME].m_Id);
|
||||
Graphics()->QuadsBegin();
|
||||
|
||||
if(pInfo->m_Team == 0) RenderTools()->SelectSprite(SPRITE_FLAG_BLUE, SPRITE_FLAG_FLIP_X);
|
||||
if(pInfo->m_Team == TEAM_RED) RenderTools()->SelectSprite(SPRITE_FLAG_BLUE, SPRITE_FLAG_FLIP_X);
|
||||
else RenderTools()->SelectSprite(SPRITE_FLAG_RED, SPRITE_FLAG_FLIP_X);
|
||||
|
||||
float size = 64.0f;
|
||||
|
@ -308,7 +308,7 @@ void CScoreboard::OnRender()
|
|||
if(m_Active)
|
||||
DoScoreBoard = true;
|
||||
|
||||
if(m_pClient->m_Snap.m_pLocalInfo && m_pClient->m_Snap.m_pLocalInfo->m_Team != -1)
|
||||
if(m_pClient->m_Snap.m_pLocalInfo && m_pClient->m_Snap.m_pLocalInfo->m_Team != TEAM_SPECTATORS)
|
||||
{
|
||||
// we are not a spectator, check if we are ead
|
||||
if(!m_pClient->m_Snap.m_pLocalCharacter || m_pClient->m_Snap.m_pLocalCharacter->m_Health < 0)
|
||||
|
@ -354,8 +354,8 @@ void CScoreboard::OnRender()
|
|||
TextRender()->Text(0, Width/2-w/2, 45, 92.0f, pText, -1);
|
||||
}
|
||||
|
||||
RenderScoreboard(Width/2-w-20, 150.0f, w, 0, Localize("Red team"));
|
||||
RenderScoreboard(Width/2 + 20, 150.0f, w, 1, Localize("Blue team"));
|
||||
RenderScoreboard(Width/2-w-20, 150.0f, w, TEAM_RED, Localize("Red team"));
|
||||
RenderScoreboard(Width/2 + 20, 150.0f, w, TEAM_BLUE, Localize("Blue team"));
|
||||
}
|
||||
|
||||
RenderGoals(Width/2-w/2, 150+750+25, w);
|
||||
|
|
|
@ -689,7 +689,7 @@ void CGameClient::OnNewSnapshot()
|
|||
|
||||
// go trough all the items in the snapshot and gather the info we want
|
||||
{
|
||||
m_Snap.m_aTeamSize[0] = m_Snap.m_aTeamSize[1] = 0;
|
||||
m_Snap.m_aTeamSize[TEAM_RED] = m_Snap.m_aTeamSize[TEAM_BLUE] = 0;
|
||||
|
||||
int Num = Client()->SnapNumItems(IClient::SNAP_CURRENT);
|
||||
for(int i = 0; i < Num; i++)
|
||||
|
@ -750,12 +750,12 @@ void CGameClient::OnNewSnapshot()
|
|||
m_Snap.m_LocalCid = Item.m_Id;
|
||||
m_Snap.m_pLocalInfo = pInfo;
|
||||
|
||||
if (pInfo->m_Team == -1)
|
||||
if(pInfo->m_Team == TEAM_SPECTATORS)
|
||||
m_Snap.m_Spectate = true;
|
||||
}
|
||||
|
||||
// calculate team-balance
|
||||
if(pInfo->m_Team != -1)
|
||||
if(pInfo->m_Team != TEAM_SPECTATORS)
|
||||
m_Snap.m_aTeamSize[pInfo->m_Team]++;
|
||||
|
||||
}
|
||||
|
@ -955,7 +955,7 @@ void CGameClient::CClientData::UpdateRenderInfo()
|
|||
if(g_GameClient.m_Snap.m_pGameobj && g_GameClient.m_Snap.m_pGameobj->m_Flags&GAMEFLAG_TEAMS)
|
||||
{
|
||||
const int TeamColors[2] = {65387, 10223467};
|
||||
if(m_Team >= 0 && m_Team <= 1)
|
||||
if(m_Team >= TEAM_RED && m_Team <= TEAM_BLUE)
|
||||
{
|
||||
m_RenderInfo.m_Texture = g_GameClient.m_pSkins->Get(m_SkinId)->m_ColorTexture;
|
||||
m_RenderInfo.m_ColorBody = g_GameClient.m_pSkins->GetColorV4(TeamColors[m_Team]);
|
||||
|
|
|
@ -521,7 +521,7 @@ void CCharacter::OnDirectInput(CNetObj_PlayerInput *pNewInput)
|
|||
mem_copy(&m_LatestPrevInput, &m_LatestInput, sizeof(m_LatestInput));
|
||||
mem_copy(&m_LatestInput, pNewInput, sizeof(m_LatestInput));
|
||||
|
||||
if(m_NumInputs > 2 && m_pPlayer->GetTeam() != -1)
|
||||
if(m_NumInputs > 2 && m_pPlayer->GetTeam() != TEAM_SPECTATORS)
|
||||
{
|
||||
HandleWeaponSwitch();
|
||||
FireWeapon();
|
||||
|
@ -628,7 +628,7 @@ void CCharacter::TickDefered()
|
|||
if(Events&COREEVENT_HOOK_HIT_NOHOOK) GameServer()->CreateSound(m_Pos, SOUND_HOOK_NOATTACH, Mask);
|
||||
|
||||
|
||||
if(m_pPlayer->GetTeam() == -1)
|
||||
if(m_pPlayer->GetTeam() == TEAM_SPECTATORS)
|
||||
{
|
||||
m_Pos.x = m_Input.m_TargetX;
|
||||
m_Pos.y = m_Input.m_TargetY;
|
||||
|
|
|
@ -414,7 +414,7 @@ void CGameContext::OnTick()
|
|||
bool aVoteChecked[MAX_CLIENTS] = {0};
|
||||
for(int i = 0; i < MAX_CLIENTS; i++)
|
||||
{
|
||||
if(!m_apPlayers[i] || m_apPlayers[i]->GetTeam() == -1 || aVoteChecked[i]) // don't count in votes by spectators
|
||||
if(!m_apPlayers[i] || m_apPlayers[i]->GetTeam() == TEAM_SPECTATORS || aVoteChecked[i]) // don't count in votes by spectators
|
||||
continue;
|
||||
|
||||
int ActVote = m_apPlayers[i]->m_Vote;
|
||||
|
@ -513,7 +513,7 @@ void CGameContext::OnClientEnter(int ClientId)
|
|||
void CGameContext::OnClientConnected(int ClientId)
|
||||
{
|
||||
// Check which team the player should be on
|
||||
const int StartTeam = g_Config.m_SvTournamentMode ? -1 : m_pController->GetAutoTeam(ClientId);
|
||||
const int StartTeam = g_Config.m_SvTournamentMode ? TEAM_SPECTATORS : m_pController->GetAutoTeam(ClientId);
|
||||
|
||||
m_apPlayers[ClientId] = new(ClientId) CPlayer(this, ClientId, StartTeam);
|
||||
//players[client_id].init(client_id);
|
||||
|
@ -595,7 +595,7 @@ void CGameContext::OnMessage(int MsgId, CUnpacker *pUnpacker, int ClientId)
|
|||
|
||||
int64 Now = Server()->Tick();
|
||||
p->m_Last_VoteTry = Now;
|
||||
if(p->GetTeam() == -1)
|
||||
if(p->GetTeam() == TEAM_SPECTATORS)
|
||||
{
|
||||
SendChatTarget(ClientId, "Spectators aren't allowed to start a vote.");
|
||||
return;
|
||||
|
@ -732,7 +732,7 @@ void CGameContext::OnMessage(int MsgId, CUnpacker *pUnpacker, int ClientId)
|
|||
if(m_pController->CanChangeTeam(p, pMsg->m_Team))
|
||||
{
|
||||
p->m_Last_SetTeam = Server()->Tick();
|
||||
if(p->GetTeam() == -1 || pMsg->m_Team == -1)
|
||||
if(p->GetTeam() == TEAM_SPECTATORS || pMsg->m_Team == TEAM_SPECTATORS)
|
||||
m_VoteUpdate = true;
|
||||
p->SetTeam(pMsg->m_Team);
|
||||
(void)m_pController->CheckTeamBalance();
|
||||
|
|
|
@ -23,8 +23,8 @@ IGameController::IGameController(class CGameContext *pGameServer)
|
|||
m_RoundStartTick = Server()->Tick();
|
||||
m_RoundCount = 0;
|
||||
m_GameFlags = 0;
|
||||
m_aTeamscore[0] = 0;
|
||||
m_aTeamscore[1] = 0;
|
||||
m_aTeamscore[TEAM_RED] = 0;
|
||||
m_aTeamscore[TEAM_BLUE] = 0;
|
||||
m_aMapWish[0] = 0;
|
||||
|
||||
m_UnbalancedTick = -1;
|
||||
|
@ -81,7 +81,7 @@ bool IGameController::CanSpawn(CPlayer *pPlayer, vec2 *pOutPos)
|
|||
CSpawnEval Eval;
|
||||
|
||||
// spectators can't spawn
|
||||
if(pPlayer->GetTeam() == -1)
|
||||
if(pPlayer->GetTeam() == TEAM_SPECTATORS)
|
||||
return false;
|
||||
|
||||
if(IsTeamplay())
|
||||
|
@ -174,9 +174,9 @@ const char *IGameController::GetTeamName(int Team)
|
|||
{
|
||||
if(IsTeamplay())
|
||||
{
|
||||
if(Team == 0)
|
||||
if(Team == TEAM_RED)
|
||||
return "red team";
|
||||
else if(Team == 1)
|
||||
else if(Team == TEAM_BLUE)
|
||||
return "blue team";
|
||||
}
|
||||
else
|
||||
|
@ -198,8 +198,8 @@ void IGameController::StartRound()
|
|||
m_SuddenDeath = 0;
|
||||
m_GameOverTick = -1;
|
||||
GameServer()->m_World.m_Paused = false;
|
||||
m_aTeamscore[0] = 0;
|
||||
m_aTeamscore[1] = 0;
|
||||
m_aTeamscore[TEAM_RED] = 0;
|
||||
m_aTeamscore[TEAM_BLUE] = 0;
|
||||
m_ForceBalanced = false;
|
||||
char aBuf[256];
|
||||
str_format(aBuf, sizeof(aBuf), "start round type='%s' teamplay='%d'", m_pGameType, m_GameFlags&GAMEFLAG_TEAMS);
|
||||
|
@ -303,7 +303,7 @@ void IGameController::OnPlayerInfoChange(class CPlayer *pP)
|
|||
const int aTeamColors[2] = {65387, 10223467};
|
||||
if(IsTeamplay())
|
||||
{
|
||||
if(pP->GetTeam() >= 0 || pP->GetTeam() <= 1)
|
||||
if(pP->GetTeam() >= TEAM_RED && pP->GetTeam() <= TEAM_BLUE)
|
||||
{
|
||||
pP->m_TeeInfos.m_UseCustomColor = 1;
|
||||
pP->m_TeeInfos.m_ColorBody = aTeamColors[pP->GetTeam()];
|
||||
|
@ -412,7 +412,7 @@ void IGameController::Tick()
|
|||
float aPScore[MAX_CLIENTS] = {0.0f};
|
||||
for(int i = 0; i < MAX_CLIENTS; i++)
|
||||
{
|
||||
if(GameServer()->m_apPlayers[i] && GameServer()->m_apPlayers[i]->GetTeam() != -1)
|
||||
if(GameServer()->m_apPlayers[i] && GameServer()->m_apPlayers[i]->GetTeam() != TEAM_SPECTATORS)
|
||||
{
|
||||
aT[GameServer()->m_apPlayers[i]->GetTeam()]++;
|
||||
aPScore[i] = GameServer()->m_apPlayers[i]->m_Score*Server()->TickSpeed()*60.0f/
|
||||
|
@ -462,7 +462,7 @@ void IGameController::Tick()
|
|||
{
|
||||
for(int i = 0; i < MAX_CLIENTS; ++i)
|
||||
{
|
||||
if(GameServer()->m_apPlayers[i] && GameServer()->m_apPlayers[i]->GetTeam() != -1 && !Server()->IsAuthed(i))
|
||||
if(GameServer()->m_apPlayers[i] && GameServer()->m_apPlayers[i]->GetTeam() != TEAM_SPECTATORS && !Server()->IsAuthed(i))
|
||||
{
|
||||
if(Server()->Tick() > GameServer()->m_apPlayers[i]->m_LastActionTick+g_Config.m_SvInactiveKickTime*Server()->TickSpeed()*60)
|
||||
{
|
||||
|
@ -471,7 +471,7 @@ void IGameController::Tick()
|
|||
case 0:
|
||||
{
|
||||
// move player to spectator
|
||||
GameServer()->m_apPlayers[i]->SetTeam(-1);
|
||||
GameServer()->m_apPlayers[i]->SetTeam(TEAM_SPECTATORS);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
|
@ -479,12 +479,12 @@ void IGameController::Tick()
|
|||
// move player to spectator if the reserved slots aren't filled yet, kick him otherwise
|
||||
int Spectators = 0;
|
||||
for(int j = 0; j < MAX_CLIENTS; ++j)
|
||||
if(GameServer()->m_apPlayers[j] && GameServer()->m_apPlayers[j]->GetTeam() == -1)
|
||||
if(GameServer()->m_apPlayers[j] && GameServer()->m_apPlayers[j]->GetTeam() == TEAM_SPECTATORS)
|
||||
++Spectators;
|
||||
if(Spectators >= g_Config.m_SvSpectatorSlots)
|
||||
Server()->Kick(i, "Kicked for inactivity");
|
||||
else
|
||||
GameServer()->m_apPlayers[i]->SetTeam(-1);
|
||||
GameServer()->m_apPlayers[i]->SetTeam(TEAM_SPECTATORS);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
|
@ -507,8 +507,8 @@ void IGameController::Tick()
|
|||
{
|
||||
if(IsTeamplay())
|
||||
{
|
||||
Prog = max(Prog, (m_aTeamscore[0]*100)/g_Config.m_SvScorelimit);
|
||||
Prog = max(Prog, (m_aTeamscore[1]*100)/g_Config.m_SvScorelimit);
|
||||
Prog = max(Prog, (m_aTeamscore[TEAM_RED]*100)/g_Config.m_SvScorelimit);
|
||||
Prog = max(Prog, (m_aTeamscore[TEAM_BLUE]*100)/g_Config.m_SvScorelimit);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -556,14 +556,14 @@ void IGameController::Snap(int SnappingClient)
|
|||
if(SnappingClient == -1)
|
||||
{
|
||||
// we are recording a demo, just set the scores
|
||||
pGameObj->m_TeamscoreRed = m_aTeamscore[0];
|
||||
pGameObj->m_TeamscoreBlue = m_aTeamscore[1];
|
||||
pGameObj->m_TeamscoreRed = m_aTeamscore[TEAM_RED];
|
||||
pGameObj->m_TeamscoreBlue = m_aTeamscore[TEAM_BLUE];
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO: this little hack should be removed
|
||||
pGameObj->m_TeamscoreRed = IsTeamplay() ? m_aTeamscore[0] : GameServer()->m_apPlayers[SnappingClient]->m_Score;
|
||||
pGameObj->m_TeamscoreBlue = m_aTeamscore[1];
|
||||
pGameObj->m_TeamscoreRed = IsTeamplay() ? m_aTeamscore[TEAM_RED] : GameServer()->m_apPlayers[SnappingClient]->m_Score;
|
||||
pGameObj->m_TeamscoreBlue = m_aTeamscore[TEAM_BLUE];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -578,14 +578,14 @@ int IGameController::GetAutoTeam(int Notthisid)
|
|||
{
|
||||
if(GameServer()->m_apPlayers[i] && i != Notthisid)
|
||||
{
|
||||
if(GameServer()->m_apPlayers[i]->GetTeam() == 0 || GameServer()->m_apPlayers[i]->GetTeam() == 1)
|
||||
if(GameServer()->m_apPlayers[i]->GetTeam() >= TEAM_RED && GameServer()->m_apPlayers[i]->GetTeam() <= TEAM_BLUE)
|
||||
aNumplayers[GameServer()->m_apPlayers[i]->GetTeam()]++;
|
||||
}
|
||||
}
|
||||
|
||||
int Team = 0;
|
||||
if(IsTeamplay())
|
||||
Team = aNumplayers[0] > aNumplayers[1] ? 1 : 0;
|
||||
Team = aNumplayers[TEAM_RED] > aNumplayers[TEAM_BLUE] ? TEAM_BLUE : TEAM_RED;
|
||||
|
||||
if(CanJoinTeam(Team, Notthisid))
|
||||
return Team;
|
||||
|
@ -594,7 +594,7 @@ int IGameController::GetAutoTeam(int Notthisid)
|
|||
|
||||
bool IGameController::CanJoinTeam(int Team, int Notthisid)
|
||||
{
|
||||
if(Team == -1 || (GameServer()->m_apPlayers[Notthisid] && GameServer()->m_apPlayers[Notthisid]->GetTeam() != -1))
|
||||
if(Team == TEAM_SPECTATORS || (GameServer()->m_apPlayers[Notthisid] && GameServer()->m_apPlayers[Notthisid]->GetTeam() != TEAM_SPECTATORS))
|
||||
return true;
|
||||
|
||||
int aNumplayers[2] = {0,0};
|
||||
|
@ -602,7 +602,7 @@ bool IGameController::CanJoinTeam(int Team, int Notthisid)
|
|||
{
|
||||
if(GameServer()->m_apPlayers[i] && i != Notthisid)
|
||||
{
|
||||
if(GameServer()->m_apPlayers[i]->GetTeam() >= 0 || GameServer()->m_apPlayers[i]->GetTeam() == 1)
|
||||
if(GameServer()->m_apPlayers[i]->GetTeam() >= TEAM_RED && GameServer()->m_apPlayers[i]->GetTeam() <= TEAM_BLUE)
|
||||
aNumplayers[GameServer()->m_apPlayers[i]->GetTeam()]++;
|
||||
}
|
||||
}
|
||||
|
@ -619,7 +619,7 @@ bool IGameController::CheckTeamBalance()
|
|||
for(int i = 0; i < MAX_CLIENTS; i++)
|
||||
{
|
||||
CPlayer *pP = GameServer()->m_apPlayers[i];
|
||||
if(pP && pP->GetTeam() != -1)
|
||||
if(pP && pP->GetTeam() != TEAM_SPECTATORS)
|
||||
aT[pP->GetTeam()]++;
|
||||
}
|
||||
|
||||
|
@ -645,26 +645,26 @@ bool IGameController::CanChangeTeam(CPlayer *pPlayer, int JoinTeam)
|
|||
{
|
||||
int aT[2] = {0, 0};
|
||||
|
||||
if (!IsTeamplay() || JoinTeam == -1 || !g_Config.m_SvTeambalanceTime)
|
||||
if (!IsTeamplay() || JoinTeam == TEAM_SPECTATORS || !g_Config.m_SvTeambalanceTime)
|
||||
return true;
|
||||
|
||||
for(int i = 0; i < MAX_CLIENTS; i++)
|
||||
{
|
||||
CPlayer *pP = GameServer()->m_apPlayers[i];
|
||||
if(pP && pP->GetTeam() != -1)
|
||||
if(pP && pP->GetTeam() != TEAM_SPECTATORS)
|
||||
aT[pP->GetTeam()]++;
|
||||
}
|
||||
|
||||
// simulate what would happen if changed team
|
||||
aT[JoinTeam]++;
|
||||
if (pPlayer->GetTeam() != -1)
|
||||
if (pPlayer->GetTeam() != TEAM_SPECTATORS)
|
||||
aT[JoinTeam^1]--;
|
||||
|
||||
// there is a player-difference of at least 2
|
||||
if(absolute(aT[0]-aT[1]) >= 2)
|
||||
{
|
||||
// player wants to join team with less players
|
||||
if ((aT[0] < aT[1] && JoinTeam == 0) || (aT[0] > aT[1] && JoinTeam == 1))
|
||||
if ((aT[0] < aT[1] && JoinTeam == TEAM_RED) || (aT[0] > aT[1] && JoinTeam == TEAM_BLUE))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
|
@ -711,10 +711,10 @@ void IGameController::DoTeamScoreWincheck()
|
|||
if(m_GameOverTick == -1 && !m_Warmup)
|
||||
{
|
||||
// check score win condition
|
||||
if((g_Config.m_SvScorelimit > 0 && (m_aTeamscore[0] >= g_Config.m_SvScorelimit || m_aTeamscore[1] >= g_Config.m_SvScorelimit)) ||
|
||||
if((g_Config.m_SvScorelimit > 0 && (m_aTeamscore[TEAM_RED] >= g_Config.m_SvScorelimit || m_aTeamscore[TEAM_BLUE] >= g_Config.m_SvScorelimit)) ||
|
||||
(g_Config.m_SvTimelimit > 0 && (Server()->Tick()-m_RoundStartTick) >= g_Config.m_SvTimelimit*Server()->TickSpeed()*60))
|
||||
{
|
||||
if(m_aTeamscore[0] != m_aTeamscore[1])
|
||||
if(m_aTeamscore[TEAM_RED] != m_aTeamscore[TEAM_BLUE])
|
||||
EndRound();
|
||||
else
|
||||
m_SuddenDeath = 1;
|
||||
|
@ -724,9 +724,9 @@ void IGameController::DoTeamScoreWincheck()
|
|||
|
||||
int IGameController::ClampTeam(int Team)
|
||||
{
|
||||
if(Team < 0) // spectator
|
||||
return -1;
|
||||
if(Team < 0)
|
||||
return TEAM_SPECTATORS;
|
||||
if(IsTeamplay())
|
||||
return Team&1;
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -22,8 +22,8 @@ bool CGameControllerCTF::OnEntity(int Index, vec2 Pos)
|
|||
return true;
|
||||
|
||||
int Team = -1;
|
||||
if(Index == ENTITY_FLAGSTAND_RED) Team = 0;
|
||||
if(Index == ENTITY_FLAGSTAND_BLUE) Team = 1;
|
||||
if(Index == ENTITY_FLAGSTAND_RED) Team = TEAM_RED;
|
||||
if(Index == ENTITY_FLAGSTAND_BLUE) Team = TEAM_BLUE;
|
||||
if(Team == -1 || m_apFlags[Team])
|
||||
return false;
|
||||
|
||||
|
@ -142,7 +142,7 @@ void CGameControllerCTF::Tick()
|
|||
int Num = GameServer()->m_World.FindEntities(F->m_Pos, CFlag::ms_PhysSize, (CEntity**)apCloseCCharacters, MAX_CLIENTS, NETOBJTYPE_CHARACTER);
|
||||
for(int i = 0; i < Num; i++)
|
||||
{
|
||||
if(!apCloseCCharacters[i]->IsAlive() || apCloseCCharacters[i]->GetPlayer()->GetTeam() == -1 || GameServer()->Collision()->IntersectLine(F->m_Pos, apCloseCCharacters[i]->m_Pos, NULL, NULL))
|
||||
if(!apCloseCCharacters[i]->IsAlive() || apCloseCCharacters[i]->GetPlayer()->GetTeam() == TEAM_SPECTATORS || GameServer()->Collision()->IntersectLine(F->m_Pos, apCloseCCharacters[i]->m_Pos, NULL, NULL))
|
||||
continue;
|
||||
|
||||
if(apCloseCCharacters[i]->GetPlayer()->GetTeam() == F->m_Team)
|
||||
|
|
|
@ -129,10 +129,10 @@ void CPlayer::OnDirectInput(CNetObj_PlayerInput *NewInput)
|
|||
if(Character)
|
||||
Character->OnDirectInput(NewInput);
|
||||
|
||||
if(!Character && m_Team >= 0 && (NewInput->m_Fire&1))
|
||||
if(!Character && m_Team != TEAM_SPECTATORS && (NewInput->m_Fire&1))
|
||||
m_Spawning = true;
|
||||
|
||||
if(!Character && m_Team == -1)
|
||||
if(!Character && m_Team == TEAM_SPECTATORS)
|
||||
m_ViewPos = vec2(NewInput->m_TargetX, NewInput->m_TargetY);
|
||||
|
||||
// check for activity
|
||||
|
@ -165,7 +165,7 @@ void CPlayer::KillCharacter(int Weapon)
|
|||
|
||||
void CPlayer::Respawn()
|
||||
{
|
||||
if(m_Team > -1)
|
||||
if(m_Team != TEAM_SPECTATORS)
|
||||
m_Spawning = true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue