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

PreGame: avoid crashing on random map options

Options is still broken, but at least we shouldn't crash there.
This commit is contained in:
ArseniyShestakov 2015-11-25 07:25:44 +03:00
parent 45d183289d
commit 2276af70dc
3 changed files with 12 additions and 5 deletions

View File

@ -1875,9 +1875,9 @@ void CRandomMapTab::updateMapInfo()
// Generate player information
mapInfo->mapHeader->players.clear();
int playersToGen = (mapGenOptions.getPlayerCount() == CMapGenOptions::RANDOM_SIZE
|| mapGenOptions.getCompOnlyPlayerCount() == CMapGenOptions::RANDOM_SIZE)
? 8 : mapGenOptions.getPlayerCount() + mapGenOptions.getCompOnlyPlayerCount();
int playersToGen = PlayerColor::PLAYER_LIMIT_I;
if(mapGenOptions.getPlayerCount() != CMapGenOptions::RANDOM_SIZE)
playersToGen = mapGenOptions.getPlayerCount();
mapInfo->mapHeader->howManyTeams = playersToGen;
for(int i = 0; i < playersToGen; ++i)
@ -1885,7 +1885,7 @@ void CRandomMapTab::updateMapInfo()
PlayerInfo player;
player.isFactionRandom = true;
player.canComputerPlay = true;
if(i >= mapGenOptions.getPlayerCount() && mapGenOptions.getPlayerCount() != CMapGenOptions::RANDOM_SIZE)
if(i >= mapGenOptions.getHumanOnlyPlayerCount())
{
player.canHumanPlay = false;
}

View File

@ -78,6 +78,11 @@ void CMapGenOptions::setPlayerCount(si8 value)
resetPlayersMap();
}
si8 CMapGenOptions::getHumanOnlyPlayerCount() const
{
return humanPlayersCount;
}
si8 CMapGenOptions::getTeamCount() const
{
return teamCount;
@ -96,7 +101,7 @@ si8 CMapGenOptions::getCompOnlyPlayerCount() const
void CMapGenOptions::setCompOnlyPlayerCount(si8 value)
{
assert(value == RANDOM_SIZE || (value >= 0 && value <= getPlayerCount()));
assert(value == RANDOM_SIZE || (getPlayerCount() == RANDOM_SIZE || (value >= 0 && value <= getPlayerCount())));
compOnlyPlayerCount = value;
if (getPlayerCount() != RANDOM_SIZE && getCompOnlyPlayerCount() != RANDOM_SIZE)

View File

@ -108,6 +108,8 @@ public:
si8 getPlayerCount() const;
void setPlayerCount(si8 value);
si8 getHumanOnlyPlayerCount() const;
/// The count of the teams ranging from 0 to <players count - 1> or RANDOM_SIZE for random.
si8 getTeamCount() const;
void setTeamCount(si8 value);