23 #include "playerslist.h"
28 QList<Player> players;
49 PlayersList::~PlayersList()
57 for (
Player player : players())
70 for (
Player player : players())
72 if (player.isBot() && player.teamNum() == Player::TEAM_NONE)
79 void PlayersList::clear()
84 int PlayersList::numBots()
const
87 for (
Player player : players())
98 int PlayersList::numBotsOnTeam(
int team)
const
101 for (
Player player : players())
103 if (player.isBot() && player.teamNum() == team)
112 int PlayersList::numBotsWithoutTeam()
const
115 for (
Player player : players())
117 if (player.isBot() && player.teamNum() == Player::TEAM_NONE)
131 int PlayersList::numClientsWithoutBots()
const
133 return size() - numBots();
136 int PlayersList::numHumansInGame()
const
138 int humansInGame = 0;
140 for (
Player player : players())
142 if (!player.isBot() && !player.isSpectating())
151 int PlayersList::numHumansOnTeam(
int team)
const
154 for (
Player player : players())
157 && !player.isSpectating()
158 && player.teamNum() == team)
167 int PlayersList::numHumansWithoutTeam()
const
170 for (
Player player : players())
173 && !player.isSpectating()
174 && player.teamNum() == Player::TEAM_NONE)
183 int PlayersList::numPlayersInGame()
const
185 int playersInGame = 0;
187 for (
Player player : players())
189 if (!player.isSpectating())
195 return playersInGame;
198 int PlayersList::numPlayersOnTeam(
int team)
const
201 for (
Player player : players())
203 if (player.teamNum() == team)
212 int PlayersList::numSpectators()
const
216 for (
Player player : players())
218 if (player.isSpectating())
229 d->players << player;
233 Player &PlayersList::operator[](
int index)
235 return d->players[index];
238 const Player &PlayersList::operator[](
int index)
const
240 return d->players[index];
243 const QList<Player> &PlayersList::players()
const
250 playersListMap.clear();
252 for (
const Player &player : players())
254 if (!player.isSpectating() && !player.isTeamlessBot())
256 int teamIndex = player.teamNum();
257 if (playersListMap.contains(teamIndex))
259 playersListMap[teamIndex] << player;
265 playersListMap.insert(teamIndex, newList);
271 int PlayersList::size()
const
273 return d->players.size();
276 void PlayersList::spectators(
PlayersList &spectatorsList)
const
278 spectatorsList.clear();
280 for (
Player player : players())
282 if (player.isSpectating())
284 spectatorsList << player;