Changeset - r7640:7448cde64dcb
[Not reviewed]
master
0 2 0
rubidium - 17 years ago 2007-09-26 14:32:06
rubidium@openttd.org
(svn r11171) -Fix [FS#1257]: disable autoslope for automatically changed stuff (like towns and industries) and enable it in the scenario editor. Patch by frosch.
2 files changed with 17 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/autoslope.h
Show inline comments
 
@@ -36,7 +36,9 @@ static inline bool AutoslopeCheckForEntr
 
 */
 
static inline bool AutoslopeEnabled()
 
{
 
	return (_patches.autoslope && IsValidPlayer(_current_player) && !_is_old_ai_player);
 
	return (_patches.autoslope &&
 
	        ((IsValidPlayer(_current_player) && !_is_old_ai_player) ||
 
	         (_current_player == OWNER_NONE && _game_mode == GM_EDITOR)));
 
}
 

	
 
#endif /* AUTOSLOPE_H */
src/industry_cmd.cpp
Show inline comments
 
@@ -1336,15 +1336,26 @@ static bool CheckIfCanLevelIndustryPlatf
 
	/* Check if we don't leave the map */
 
	if (TileX(cur_tile) == 0 || TileY(cur_tile) == 0 || TileX(cur_tile) + size_x >= MapMaxX() || TileY(cur_tile) + size_y >= MapMaxY()) return false;
 

	
 
	/* _current_player is OWNER_NONE for randomly generated industries and in editor, or the player who funded or prospected the industry.
 
	 * Perform terraforming as OWNER_TOWN to disable autoslope. */
 
	PlayerID old_player = _current_player;
 
	_current_player = OWNER_TOWN;
 

	
 
	BEGIN_TILE_LOOP(tile_walk, size_x, size_y, cur_tile) {
 
		curh = TileHeight(tile_walk);
 
		if (curh != h) {
 
			/* This tile needs terraforming. Check if we can do that without
 
			 *  damaging the surroundings too much. */
 
			if (!CheckCanTerraformSurroundingTiles(tile_walk, h, 0)) return false;
 
			if (!CheckCanTerraformSurroundingTiles(tile_walk, h, 0)) {
 
				_current_player = old_player;
 
				return false;
 
			}
 
			/* This is not 100% correct check, but the best we can do without modifying the map.
 
			 *  What is missing, is if the difference in height is more than 1.. */
 
			if (CmdFailed(DoCommand(tile_walk, SLOPE_N, (curh > h) ? 0 : 1, flags & ~DC_EXEC, CMD_TERRAFORM_LAND))) return false;
 
			if (CmdFailed(DoCommand(tile_walk, SLOPE_N, (curh > h) ? 0 : 1, flags & ~DC_EXEC, CMD_TERRAFORM_LAND))) {
 
				_current_player = old_player;
 
				return false;
 
			}
 
		}
 
	} END_TILE_LOOP(tile_walk, size_x, size_y, cur_tile)
 

	
 
@@ -1362,6 +1373,7 @@ static bool CheckIfCanLevelIndustryPlatf
 
		} END_TILE_LOOP(tile_walk, size_x, size_y, cur_tile)
 
	}
 

	
 
	_current_player = old_player;
 
	return true;
 
}
 

	
0 comments (0 inline, 0 general)