(svn r13489) -Fix: first determine where to *exactly* build a house before asking a NewGRF whether the location is good instead of possibly moving the house a tile after the NewGRF said the location is good.
authorrubidium
Thu, 12 Jun 2008 14:41:29 +0000
changeset 10936 9bd0503ae2c6
parent 10935 cdbe711bd2ae
child 10937 6577ed0fbb7f
(svn r13489) -Fix: first determine where to *exactly* build a house before asking a NewGRF whether the location is good instead of possibly moving the house a tile after the NewGRF said the location is good.
src/town_cmd.cpp
--- a/src/town_cmd.cpp	Thu Jun 12 13:40:07 2008 +0000
+++ b/src/town_cmd.cpp	Thu Jun 12 14:41:29 2008 +0000
@@ -1929,11 +1929,6 @@
 			}
 
 			if ((hs->extra_flags & BUILDING_IS_HISTORICAL) && !_generating_world) continue;
-
-			if (HasBit(hs->callback_mask, CBM_HOUSE_ALLOW_CONSTRUCTION)) {
-				uint16 callback_res = GetHouseCallback(CBID_HOUSE_ALLOW_CONSTRUCTION, 0, 0, house, t, tile);
-				if (callback_res != CALLBACK_FAILED && GB(callback_res, 0, 8) == 0) continue;
-			}
 		}
 
 		if (_cur_year < hs->min_year || _cur_year > hs->max_year) continue;
@@ -1947,7 +1942,7 @@
 			SetBit(oneof, TOWN_HAS_STADIUM);
 		}
 
-		if (HASBITS(t->flags12 , oneof)) continue;
+		if (HASBITS(t->flags12, oneof)) continue;
 
 		/* Make sure there is no slope? */
 		bool noslope = (hs->building_flags & TILE_NOT_SLOPED) != 0;
@@ -1963,6 +1958,11 @@
 			/* 1x1 house checks are already done */
 		}
 
+		if (HasBit(hs->callback_mask, CBM_HOUSE_ALLOW_CONSTRUCTION)) {
+			uint16 callback_res = GetHouseCallback(CBID_HOUSE_ALLOW_CONSTRUCTION, 0, 0, house, t, tile);
+			if (callback_res != CALLBACK_FAILED && GB(callback_res, 0, 8) == 0) continue;
+		}
+
 		/* build the house */
 		t->num_houses++;
 		IncreaseBuildingCount(t, house);