(svn r1831) -Fix: Scenario Editor now handles human-made roads better (try to build
authortruelight
Sun, 06 Feb 2005 20:29:32 +0000
changeset 1327 f98ba72197f5
parent 1326 f37b6aa28829
child 1328 e069d2db0e4c
(svn r1831) -Fix: Scenario Editor now handles human-made roads better (try to build
a city layout before placing the city, finally that works very nice)
road_cmd.c
town_cmd.c
--- a/road_cmd.c	Sun Feb 06 19:22:54 2005 +0000
+++ b/road_cmd.c	Sun Feb 06 20:29:32 2005 +0000
@@ -966,13 +966,6 @@
 
 		grp = 0;
 		if (t != NULL) {
-			/* In SE, set the owner to OWNER_TOWN */
-			if (_game_mode == GM_EDITOR && _map_owner[tile] != OWNER_TOWN) {
-				_map_owner[tile] = OWNER_TOWN;
-				/* XXX - This line is not perfect, any suggestions? */
-				_map2[tile] = ClosestTownFromTile(tile, (uint)-1)->index;
-			}
-
 			grp = GetTownRadiusGroup(t, tile);
 
 			// Show an animation to indicate road work
--- a/town_cmd.c	Sun Feb 06 19:22:54 2005 +0000
+++ b/town_cmd.c	Sun Feb 06 20:29:32 2005 +0000
@@ -729,9 +729,17 @@
 		do block = Random() & 3; while (!HASBIT(mask,block));
 		tile += ToTileIndexDiff(_roadblock_tileadd[block]);
 
-		/* Don't allow building over roads of other cities */
-		if (IsTileType(tile, MP_STREET) && _map_owner[tile] == OWNER_TOWN && GetTown(_map2[tile]) != t)
-			_grow_town_result = -1;
+		if (IsTileType(tile, MP_STREET)) {
+			/* Don't allow building over roads of other cities */
+			if (_map_owner[tile] == OWNER_TOWN && GetTown(_map2[tile]) != t)
+				_grow_town_result = -1;
+			else if (_game_mode == GM_EDITOR) {
+				/* If we are in the SE, and this road-piece has no town owner yet, it just found an
+				*  owner :) (happy happy happy road now) */
+				_map_owner[tile] = OWNER_TOWN;
+				_map2[tile] = t->index;
+			}
+		}
 
 		// Max number of times is checked.
 	} while (--_grow_town_result >= 0);