1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-11-24 08:32:34 +02:00

Fix crash when generating random map with random number of players

This commit is contained in:
godric3 2018-10-27 18:18:08 +02:00
parent 0f1e853b4a
commit 7ded9dbda8
2 changed files with 12 additions and 4 deletions

View File

@ -321,7 +321,7 @@ void CClient::initMapHandler()
void CClient::initPlayerInterfaces()
{
for(auto & elem : CSH->si->playerInfos)
for(auto & elem : gs->scenarioOps->playerInfos)
{
PlayerColor color = elem.first;
if(!vstd::contains(CSH->getAllClientPlayers(CSH->c->connectionID), color))

View File

@ -71,8 +71,13 @@ void CMapGenOptions::setPlayerCount(si8 value)
if (compOnlyPlayerCount > possibleCompPlayersCount)
setCompOnlyPlayerCount(possibleCompPlayersCount);
if (getPlayerCount() != RANDOM_SIZE && getCompOnlyPlayerCount() != RANDOM_SIZE)
if (getPlayerCount() != RANDOM_SIZE)
{
if (getCompOnlyPlayerCount() != RANDOM_SIZE)
humanPlayersCount = getPlayerCount() - getCompOnlyPlayerCount();
else
humanPlayersCount = getPlayerCount();
}
resetPlayersMap();
}
@ -167,7 +172,10 @@ void CMapGenOptions::resetPlayersMap()
auto pc = PlayerColor(color);
player.setColor(pc);
auto playerType = EPlayerType::AI;
if ((getPlayerCount() != RANDOM_SIZE && color >= realPlayersCnt)
if (getPlayerCount() != RANDOM_SIZE && color < realPlayersCnt)
{
playerType = EPlayerType::HUMAN;
}else if ((getPlayerCount() != RANDOM_SIZE && color >= realPlayersCnt)
|| (compOnlyPlayerCount != RANDOM_SIZE && color >= (PlayerColor::PLAYER_LIMIT_I-compOnlyPlayerCount)))
{
playerType = EPlayerType::COMP_ONLY;