changeset 5577:19eb817617a0 draft

(svn r8014) -Codechange (r7573): When a tile is cleared, empty the general purpose bits in extra as well, unless they are (or could be) used for bridges. This means these bits don't have to be cleared seperately when non-bridgeable tiles are removed.
author maedhros <maedhros@openttd.org>
date Tue, 09 Jan 2007 21:43:32 +0000
parents dbf35fe9cff5
children 86e578b330aa
files src/clear_map.h src/terraform_gui.c src/tree_cmd.c
diffstat 3 files changed, 6 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/clear_map.h
+++ b/src/clear_map.h
@@ -5,6 +5,7 @@
 
 #include "macros.h"
 #include "tile.h"
+#include "bridge_map.h"
 
 /* ground type, m5 bits 2...4
  * valid densities (bits 0...1) in comments after the enum
@@ -123,12 +124,17 @@
 
 static inline void MakeClear(TileIndex t, ClearGround g, uint density)
 {
+	/* If this is a non-bridgeable tile, clear the bridge bits while the rest
+	 * of the tile information is still here. */
+	if (!MayHaveBridgeAbove(t)) SB(_m[t].extra, 6, 2, 0);
+
 	SetTileType(t, MP_CLEAR);
 	SetTileOwner(t, OWNER_NONE);
 	_m[t].m2 = 0;
 	_m[t].m3 = 0;
 	_m[t].m4 = 0 << 5 | 0 << 2;
 	SetClearGroundDensity(t, g, density);
+	SB(_m[t].extra, 2, 4, 0);
 }
 
 
--- a/src/terraform_gui.c
+++ b/src/terraform_gui.c
@@ -76,12 +76,8 @@
 	BEGIN_TILE_LOOP(tile, size_x, size_y, TileXY(sx, sy)) {
 		switch (GetTileType(tile)) {
 			case MP_CLEAR:
-				MakeClear(tile, CLEAR_ROCKS, 3);
-				break;
-
 			case MP_TREES:
 				MakeClear(tile, CLEAR_ROCKS, 3);
-				ClearBridgeMiddle(tile);
 				break;
 
 			default: continue;
--- a/src/tree_cmd.c
+++ b/src/tree_cmd.c
@@ -587,7 +587,6 @@
 					case TREE_GROUND_ROUGH: MakeClear(tile, CLEAR_ROUGH, 3); break;
 					default: MakeClear(tile, CLEAR_SNOW, GetTreeDensity(tile)); break;
 				}
-				ClearBridgeMiddle(tile);
 			}
 			break;