Shuffle player list for the 1st track in grand prix

This commit is contained in:
Benau 2018-05-11 13:44:46 +08:00
parent 52e2a64893
commit 02ecb9f914

View File

@ -30,6 +30,7 @@
#include "utils/log.hpp"
#include <algorithm>
#include <random>
//-----------------------------------------------------------------------------
/** Update and see if any player disconnects.
@ -139,14 +140,23 @@ void GameSetup::addServerInfo(NetworkString* ns)
//-----------------------------------------------------------------------------
void GameSetup::sortPlayersForGrandPrix()
{
if (!isGrandPrix() || m_tracks.size() == 1)
if (!isGrandPrix())
return;
std::lock_guard<std::mutex> lock(m_players_mutex);
if (m_tracks.size() == 1)
{
std::random_device rd;
std::mt19937 g(rd());
std::shuffle(m_players.begin(), m_players.end(), g);
return;
}
std::sort(m_players.begin(), m_players.end(),
[](const std::weak_ptr<NetworkPlayerProfile>& a,
const std::weak_ptr<NetworkPlayerProfile>& b)
{
// They should never expired
// They should be never expired
auto c = a.lock();
assert(c);
auto d = b.lock();