Changeset - r21220:5b27a41b688e
[Not reviewed]
master
0 2 0
rubidium - 10 years ago 2014-02-06 20:42:09
rubidium@openttd.org
(svn r26308) -Fix-ish: do not try to build more towns/industries than the pool can hold (MJP)
2 files changed with 2 insertions and 1 deletions:
0 comments (0 inline, 0 general)
src/industry_cmd.cpp
Show inline comments
 
@@ -1986,25 +1986,25 @@ static uint GetNumberOfIndustries()
 
	/* Number of industries on a 256x256 map. */
 
	static const uint16 numof_industry_table[] = {
 
		0,    // none
 
		0,    // minimal
 
		10,   // very low
 
		25,   // low
 
		55,   // normal
 
		80,   // high
 
	};
 

	
 
	assert(lengthof(numof_industry_table) == ID_END);
 
	uint difficulty = (_game_mode != GM_EDITOR) ? _settings_game.difficulty.industry_density : (uint)ID_VERY_LOW;
 
	return ScaleByMapSize(numof_industry_table[difficulty]);
 
	return min(IndustryPool::MAX_SIZE, ScaleByMapSize(numof_industry_table[difficulty]));
 
}
 

	
 
/**
 
 * Try to place the industry in the game.
 
 * Since there is no feedback why placement fails, there is no other option
 
 * than to try a few times before concluding it does not work.
 
 * @param type     Industry type of the desired industry.
 
 * @param try_hard Try very hard to find a place. (Used to place at least one industry per type.)
 
 * @return Pointer to created industry, or \c NULL if creation failed.
 
 */
 
static Industry *PlaceIndustry(IndustryType type, IndustryAvailabilityCallType creation_type, bool try_hard)
 
{
src/town_cmd.cpp
Show inline comments
 
@@ -1871,24 +1871,25 @@ static const byte _num_initial_towns[4] 
 
/**
 
 * This function will generate a certain amount of towns, with a certain layout
 
 * It can be called from the scenario editor (i.e.: generate Random Towns)
 
 * as well as from world creation.
 
 * @param layout which towns will be set to, when created
 
 * @return true if towns have been successfully created
 
 */
 
bool GenerateTowns(TownLayout layout)
 
{
 
	uint current_number = 0;
 
	uint difficulty = (_game_mode != GM_EDITOR) ? _settings_game.difficulty.number_towns : 0;
 
	uint total = (difficulty == (uint)CUSTOM_TOWN_NUMBER_DIFFICULTY) ? _settings_game.game_creation.custom_town_number : ScaleByMapSize(_num_initial_towns[difficulty] + (Random() & 7));
 
	total = min(TownPool::MAX_SIZE, total);
 
	uint32 townnameparts;
 

	
 
	SetGeneratingWorldProgress(GWP_TOWN, total);
 

	
 
	/* First attempt will be made at creating the suggested number of towns.
 
	 * Note that this is really a suggested value, not a required one.
 
	 * We would not like the system to lock up just because the user wanted 100 cities on a 64*64 map, would we? */
 
	do {
 
		bool city = (_settings_game.economy.larger_towns != 0 && Chance16(1, _settings_game.economy.larger_towns));
 
		IncreaseGeneratingWorldProgress(GWP_TOWN);
 
		/* Get a unique name for the town. */
 
		if (!GenerateTownName(&townnameparts)) continue;
0 comments (0 inline, 0 general)