summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormaedhros <maedhros@openttd.org>2007-01-09 21:43:32 +0000
committermaedhros <maedhros@openttd.org>2007-01-09 21:43:32 +0000
commitcfcf0c2451f0e2739d82ece4ed973676ac88e209 (patch)
tree250dd64829f92f11a4a3061b54ee146d3f8d12eb
parentc5867c93f755601c47416c90eb7e10fb152fff1e (diff)
downloadopenttd-cfcf0c2451f0e2739d82ece4ed973676ac88e209.tar.xz
(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.
-rw-r--r--src/clear_map.h6
-rw-r--r--src/terraform_gui.c4
-rw-r--r--src/tree_cmd.c1
3 files changed, 6 insertions, 5 deletions
diff --git a/src/clear_map.h b/src/clear_map.h
index 50ae63b1b..85c52a1a7 100644
--- 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 SetFenceSW(TileIndex t, uint h)
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);
}
diff --git a/src/terraform_gui.c b/src/terraform_gui.c
index f0a48b2e2..8d6e1276a 100644
--- a/src/terraform_gui.c
+++ b/src/terraform_gui.c
@@ -76,12 +76,8 @@ static void GenerateRockyArea(TileIndex end, TileIndex start)
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;
diff --git a/src/tree_cmd.c b/src/tree_cmd.c
index ccdbcfbad..47b9a4a37 100644
--- a/src/tree_cmd.c
+++ b/src/tree_cmd.c
@@ -587,7 +587,6 @@ static void TileLoop_Trees(TileIndex tile)
case TREE_GROUND_ROUGH: MakeClear(tile, CLEAR_ROUGH, 3); break;
default: MakeClear(tile, CLEAR_SNOW, GetTreeDensity(tile)); break;
}
- ClearBridgeMiddle(tile);
}
break;