(svn r15689) -Fix [FS#2720]: do not crash when the generate map doesn't contain a suitable location for a town.

replace/41b28d7194a279bdc17475d4fbe2ea6ec885a466
rubidium 15 years ago
parent 9dbf8a163f
commit d5a2dc1d0b

@ -141,7 +141,10 @@ static void _GenerateWorld(void *arg)
/* only generate towns, tree and industries in newgame mode. */
if (_game_mode != GM_EDITOR) {
GenerateTowns(_settings_game.economy.town_layout);
if (!GenerateTowns(_settings_game.economy.town_layout)) {
HandleGeneratingWorldAbortion();
return;
}
GenerateIndustries();
GenerateUnmovables();
GenerateTrees();
@ -255,7 +258,10 @@ void HandleGeneratingWorldAbortion()
CleanupGeneration();
_gw.thread->Exit();
if (_gw.thread != NULL) _gw.thread->Exit();
extern void SwitchToMode(SwitchMode new_mode);
SwitchToMode(_switch_mode);
}
/**

@ -1197,6 +1197,7 @@ STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Can't re
STR_BUILD_AUTORAIL_TIP :{BLACK}Build railway track using the Autorail mode
STR_NO_TOWN_IN_SCENARIO :{WHITE}...there is no town in this scenario
STR_COULD_NOT_CREATE_TOWN :{WHITE}Map generation aborted...{}...no suitable town locations
STR_MANY_RANDOM_TOWNS :{BLACK}Many random towns
STR_RANDOM_TOWNS_TIP :{BLACK}Cover the map with randomly placed towns

@ -1648,8 +1648,10 @@ bool GenerateTowns(TownLayout layout)
/* give it a last try, but now more aggressive */
if (num == 0 && CreateRandomTown(10000, TS_RANDOM, false, layout) == NULL) {
if (GetNumTowns() == 0) {
/* XXX - can we handle that more gracefully? */
if (_game_mode != GM_EDITOR) usererror("Could not generate any town");
if (_game_mode != GM_EDITOR) {
extern StringID _switch_mode_errorstr;
_switch_mode_errorstr = STR_COULD_NOT_CREATE_TOWN;
}
return false;
}

Loading…
Cancel
Save