Beispiel #1
0
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;
}
Beispiel #2
0
//
// 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à!
	}
}