changeset 16040:e8f4b3e0808c draft

(svn r20733) -Fix: when overbuilding an object with an industry, clear the complete object
author yexo <yexo@openttd.org>
date Sat, 04 Sep 2010 00:16:33 +0000
parents 6f17901e8aec
children aae197147c05
files src/industry_cmd.cpp
diffstat 1 files changed, 5 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/industry_cmd.cpp
+++ b/src/industry_cmd.cpp
@@ -40,6 +40,7 @@
 #include "core/pool_func.hpp"
 #include "subsidy_func.h"
 #include "core/backup_type.hpp"
+#include "object_base.h"
 
 #include "table/strings.h"
 #include "table/industry_land.h"
@@ -1694,7 +1695,9 @@
 
 	*ip = NULL;
 
+	SmallVector<TileArea, 1> object_areas(_cleared_object_areas);
 	CommandCost ret = CheckIfIndustryTilesAreFree(tile, it, itspec_index, type, random_initial_bits, founder, &custom_shape_check);
+	_cleared_object_areas = object_areas;
 	if (ret.Failed()) return ret;
 
 	if (HasBit(GetIndustrySpec(type)->callback_mask, CBM_IND_LOCATION)) {
@@ -1794,10 +1797,12 @@
 		if (num >= count) return CMD_ERROR;
 
 		CommandCost ret = CommandCost(STR_ERROR_SITE_UNSUITABLE);
+		SmallVector<TileArea, 1> object_areas(_cleared_object_areas);
 		do {
 			if (--count < 0) return ret;
 			if (--num < 0) num = indspec->num_table - 1;
 			ret = CheckIfIndustryTilesAreFree(tile, itt[num], num, it, random_initial_bits, _current_company);
+			_cleared_object_areas = object_areas;
 		} while (ret.Failed());
 
 		ret = CreateNewIndustryHelper(tile, it, flags, indspec, num, random_var8f, random_initial_bits, _current_company, &ind);