Changeset - r8234:8a4dafd5d882
[Not reviewed]
master
0 1 0
belugas - 16 years ago 2008-01-09 18:35:18
belugas@openttd.org
(svn r11798) -Codechange: add comments and give a more representative function's name
1 file changed with 17 insertions and 12 deletions:
0 comments (0 inline, 0 general)
src/industry_cmd.cpp
Show inline comments
 
@@ -1377,31 +1377,36 @@ static bool CheckIfCanLevelIndustryPlatf
 
}
 

	
 

	
 
static bool CheckIfTooCloseToIndustry(TileIndex tile, int type)
 
static bool CheckIfFarEnoughFromIndustry(TileIndex tile, int type)
 
{
 
	const IndustrySpec *indspec = GetIndustrySpec(type);
 
	const Industry *i;
 

	
 
	/* accepting industries won't be close, not even with patch */
 
	if (_patches.same_industry_close && indspec->accepts_cargo[0] == CT_INVALID)
 
		/* Allow primary industries to be placed close to any other industry */
 
		return true;
 

	
 
	FOR_ALL_INDUSTRIES(i) {
 
		/* Within 14 tiles from another industry is considered close */
 
		bool in_low_distance = DistanceMax(tile, i->xy) <= 14;
 

	
 
		/* check if an industry that accepts the same goods is nearby */
 
		if (DistanceMax(tile, i->xy) <= 14 &&
 
				indspec->accepts_cargo[0] != CT_INVALID &&
 
		if (in_low_distance &&
 
				indspec->accepts_cargo[0] != CT_INVALID && // not a primary industry?
 
				indspec->accepts_cargo[0] == i->accepts_cargo[0] && (
 
					_game_mode != GM_EDITOR ||
 
					!_patches.same_industry_close ||
 
					!_patches.multiple_industry_per_town
 
				)) {
 
				/* at least one of those options must be true */
 
				_game_mode != GM_EDITOR || // editor must not be stopped
 
				!_patches.same_industry_close ||
 
				!_patches.multiple_industry_per_town)) {
 
			_error_message = STR_INDUSTRY_TOO_CLOSE;
 
			return false;
 
		}
 

	
 
		/* check "not close to" field. */
 
		if ((i->type == indspec->conflicting[0] || i->type == indspec->conflicting[1] || i->type == indspec->conflicting[2]) &&
 
				DistanceMax(tile, i->xy) <= 14) {
 
		/* check if there are any conflicting industry types around */
 
		if ((i->type == indspec->conflicting[0] ||
 
				i->type == indspec->conflicting[1] ||
 
				i->type == indspec->conflicting[2]) &&
 
				in_low_distance) {
 
			_error_message = STR_INDUSTRY_TOO_CLOSE;
 
			return false;
 
		}
 
@@ -1558,7 +1563,7 @@ static Industry *CreateNewIndustryHelper
 
	}
 

	
 
	if (!custom_shape_check && _patches.land_generator == LG_TERRAGENESIS && _generating_world && !_ignore_restrictions && !CheckIfCanLevelIndustryPlatform(tile, 0, it, type)) return NULL;
 
	if (!CheckIfTooCloseToIndustry(tile, type)) return NULL;
 
	if (!CheckIfFarEnoughFromIndustry(tile, type)) return NULL;
 

	
 
	const Town *t = CheckMultipleIndustryInTown(tile, type);
 
	if (t == NULL) return NULL;
0 comments (0 inline, 0 general)