int AllApproved(StudentList* studList){ Node* node = frontList(studList->list_); while ( node != backList(studList->list_) ) { if (isApproved((Student*) getInfo(node))){ return 0; } node = nextList(studList->list_, node); } return 1; }
// // pour donner un team à un player // int Game::assignPlayerTeam(int playerID, char teamRequested, Client * client) { if (players[playerID]) { #ifdef _PRO_ players[playerID]->spawnSlot = -1; #endif if (teamRequested == PLAYER_TEAM_AUTO_ASSIGN) { // On va équilibrer les team :) int blueCount = 0; int redCount = 0; for (int i=0;i<MAX_PLAYER;++i) { if (players[i] && i != playerID) { switch (players[i]->teamID) { case PLAYER_TEAM_BLUE: blueCount++; break; case PLAYER_TEAM_RED: redCount++; break; } } } // On le met dans le team qui a le moins de joueur if (redCount > blueCount) { teamRequested = PLAYER_TEAM_BLUE; } else if (redCount < blueCount) { teamRequested = PLAYER_TEAM_RED; } else { // choose the losing team if(blueScore < redScore) { teamRequested = PLAYER_TEAM_BLUE; } else if(blueScore > redScore) { teamRequested = PLAYER_TEAM_RED; } else { // random is bad! but there is nothing else we could do... if (rand()%2 == 0) teamRequested = PLAYER_TEAM_BLUE; else teamRequested = PLAYER_TEAM_RED; } } } if (isApproved(players[playerID]->userID, teamRequested) == false) teamRequested = PLAYER_TEAM_SPECTATOR; if (players[playerID]->teamID != teamRequested) { // On le tue seuleument si on change de team players[playerID]->kill(true); players[playerID]->timeToSpawn = gameVar.sv_timeToSpawn; // On lui donne le nouveau team players[playerID]->teamID = teamRequested; // On print dans console switch (players[playerID]->teamID) { case PLAYER_TEAM_SPECTATOR: console->add(CString("%s\x8 goes spectator ID:%i",players[playerID]->name.s, playerID)); #ifndef CONSOLE if (client) client->eventMessages.push_back(CString(gameVar.lang_goesSpectator.s,players[playerID]->name.s)); #endif break; case PLAYER_TEAM_BLUE: console->add(CString("%s\x1 joins blue team ID:%i",players[playerID]->name.s,playerID)); #ifndef CONSOLE if (client) client->eventMessages.push_back(CString(gameVar.lang_joinBlueTeamP.s,players[playerID]->name.s)); #endif break; case PLAYER_TEAM_RED: console->add(CString("%s\x4 joins red team ID:%i",players[playerID]->name.s, playerID)); #ifndef CONSOLE if (client) client->eventMessages.push_back(CString(gameVar.lang_joinRedTeamP.s,players[playerID]->name.s)); #endif break; } } // Just in case players[playerID]->teamID = teamRequested; return teamRequested; } else { return PLAYER_TEAM_SPECTATOR; // Pas suposer en arriver là! } }