void CGameTeams::OnCharacterFinish(int ClientID) { if(m_Core.Team(ClientID) == TEAM_FLOCK || m_Core.Team(ClientID) == TEAM_SUPER) { Character(ClientID)->OnFinish(); } else { m_TeeFinished[ClientID] = true; if(TeamFinished(m_Core.Team(ClientID))) { //ChangeTeamState(m_Core.Team(id), TEAMSTATE_FINISHED);//TODO: Make it better ChangeTeamState(m_Core.Team(ClientID), TEAMSTATE_OPEN); for(int i = 0; i < MAX_CLIENTS; ++i) { if(m_Core.Team(ClientID) == m_Core.Team(i)) { CCharacter * pChar = Character(i); if(pChar != 0) { pChar->OnFinish(); m_TeeFinished[i] = false; } } } } } }
void CGameTeams::CheckTeamFinished(int Team) { if (TeamFinished(Team)) { CPlayer *TeamPlayers[MAX_CLIENTS]; unsigned int PlayersCount = 0; for (int i = 0; i < MAX_CLIENTS; ++i) { if (Team == m_Core.Team(i)) { CPlayer* pPlayer = GetPlayer(i); if (pPlayer && pPlayer->IsPlaying()) { OnFinish(pPlayer); m_TeeFinished[i] = false; TeamPlayers[PlayersCount++] = pPlayer; } } } if (PlayersCount > 0) { ChangeTeamState(Team, TEAMSTATE_FINISHED); //TODO: Make it better //ChangeTeamState(Team, TEAMSTATE_OPEN); OnTeamFinish(TeamPlayers, PlayersCount); } } }