Changeset - r7338:8c1e6d9c57f2
[Not reviewed]
master
0 1 0
belugas - 17 years ago 2007-07-27 03:07:05
belugas@openttd.org
(svn r10701) -Codechange: Make sure to not use an out of bound index when the index is specified by a grf file. It has a different meaning then.
1 file changed with 10 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/industry_cmd.cpp
Show inline comments
 
@@ -1612,7 +1612,12 @@ Industry *CreateNewIndustry(TileIndex ti
 
	return CreateNewIndustryHelper(tile, type, DC_EXEC, indspec, RandomRange(indspec->num_table));
 
}
 

	
 
static const byte _numof_industry_table[5][11] = {
 
enum {
 
	NB_NUMOFINDUSTRY = 11,
 
	NB_DIFFICULTY_LEVEL = 5,
 
};
 

	
 
static const byte _numof_industry_table[NB_DIFFICULTY_LEVEL][NB_NUMOFINDUSTRY] = {
 
	/* difficulty settings for number of industries */
 
	{0, 0, 0, 0, 0, 0, 0, 0,  0,  0,  0},   //none
 
	{0, 1, 1, 1, 1, 1, 1, 1,  1,  1,  1},   //very low
 
@@ -1627,7 +1632,9 @@ static const byte _numof_industry_table[
 
 * @param amount of industries that need to be built */
 
static void PlaceInitialIndustry(IndustryType type, int amount)
 
{
 
	int num = _numof_industry_table[_opt.diff.number_industries][amount];
 
	/* We need to bypass the amount given in parameter if it exceeds the maximum dimension of the
 
	 * _numof_industry_table.  newgrf can specify a big amount */
 
	int num = (amount > NB_NUMOFINDUSTRY) ? amount : _numof_industry_table[_opt.diff.number_industries][amount];
 
	const IndustrySpec *ind_spc = GetIndustrySpec(type);
 

	
 
	/* These are always placed next to the coastline, so we scale by the perimeter instead. */
 
@@ -1676,7 +1683,7 @@ void GenerateIndustries()
 
				/* once the chance of appearance is determind, it have to be scaled by
 
				 * the difficulty level. The "chance" in question is more an index into
 
				 * the _numof_industry_table,in fact */
 
				int num = (chance < 11) ? chance : _numof_industry_table[_opt.diff.number_industries][chance];
 
				int num = (chance > NB_NUMOFINDUSTRY) ? chance : _numof_industry_table[_opt.diff.number_industries][chance];
 

	
 
				/* These are always placed next to the coastline, so we scale by the perimeter instead. */
 
				num = (ind_spc->check_proc == CHECK_REFINERY || ind_spc->check_proc == CHECK_OIL_RIG) ? ScaleByMapSize1D(num) : ScaleByMapSize(num);
0 comments (0 inline, 0 general)