(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
authortron
Tue, 07 Mar 2006 07:51:05 +0000
changeset 3156 f4caf4197189
parent 3155 c4673c936039
child 3157 3f35e2d9c8e3
(svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
clear_cmd.c
functions.h
tunnel_map.c
tunnel_map.h
tunnelbridge_cmd.c
--- a/clear_cmd.c	Mon Mar 06 23:01:35 2006 +0000
+++ b/clear_cmd.c	Tue Mar 07 07:51:05 2006 +0000
@@ -10,6 +10,7 @@
 #include "tile.h"
 #include "viewport.h"
 #include "command.h"
+#include "tunnel_map.h"
 #include "variables.h"
 #include "table/sprites.h"
 
@@ -277,7 +278,7 @@
 			t = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(0, 1));
 			if (t <= z) z = t;
 
-			if (!CheckTunnelInWay(tile, z * 8)) {
+			if (IsTunnelInWay(tile, z * 8)) {
 				return_cmd_error(STR_1002_EXCAVATION_WOULD_DAMAGE);
 			}
 		}
--- a/functions.h	Mon Mar 06 23:01:35 2006 +0000
+++ b/functions.h	Tue Mar 07 07:51:05 2006 +0000
@@ -145,7 +145,6 @@
 void InitializeAnimatedTiles(void);
 
 /* tunnelbridge_cmd.c */
-bool CheckTunnelInWay(TileIndex tile, int z);
 bool CheckBridge_Stuff(byte bridge_type, uint bridge_len);
 uint32 GetBridgeLength(TileIndex begin, TileIndex end);
 int CalcBridgeLenCostFactor(int x);
--- a/tunnel_map.c	Mon Mar 06 23:01:35 2006 +0000
+++ b/tunnel_map.c	Tue Mar 07 07:51:05 2006 +0000
@@ -23,3 +23,30 @@
 
 	return tile;
 }
+
+
+static bool IsTunnelInWayDir(TileIndex tile, uint z, DiagDirection dir)
+{
+	TileIndexDiff delta = TileOffsByDir(dir);
+	uint height;
+
+	do {
+		tile -= delta;
+		height = GetTileZ(tile);
+	} while (z < height);
+
+	return
+		z == height &&
+		IsTileType(tile, MP_TUNNELBRIDGE) &&
+		GB(_m[tile].m5, 4, 4) == 0 &&
+		GetTunnelDirection(tile) == dir;
+}
+
+bool IsTunnelInWay(TileIndex tile, uint z)
+{
+	return
+		IsTunnelInWayDir(tile, z, DIAGDIR_NE) ||
+		IsTunnelInWayDir(tile, z, DIAGDIR_SE) ||
+		IsTunnelInWayDir(tile, z, DIAGDIR_SW) ||
+		IsTunnelInWayDir(tile, z, DIAGDIR_NW);
+}
--- a/tunnel_map.h	Mon Mar 06 23:01:35 2006 +0000
+++ b/tunnel_map.h	Tue Mar 07 07:51:05 2006 +0000
@@ -22,6 +22,7 @@
 
 
 TileIndex GetOtherTunnelEnd(TileIndex);
+bool IsTunnelInWay(TileIndex, uint z);
 
 
 static inline void MakeRoadTunnel(TileIndex t, Owner o, DiagDirection d)
--- a/tunnelbridge_cmd.c	Mon Mar 06 23:01:35 2006 +0000
+++ b/tunnelbridge_cmd.c	Tue Mar 07 07:51:05 2006 +0000
@@ -428,36 +428,6 @@
 	return cost;
 }
 
-static bool DoCheckTunnelInWay(TileIndex tile, uint z, DiagDirection dir)
-{
-	TileIndexDiff delta = TileOffsByDir(dir);
-	uint height;
-
-	do {
-		tile -= delta;
-		height = GetTileZ(tile);
-	} while (z < height);
-
-	if (z == height &&
-			IsTileType(tile, MP_TUNNELBRIDGE) &&
-			GB(_m[tile].m5, 4, 4) == 0 &&
-			GetTunnelDirection(tile) == dir) {
-		_error_message = STR_5003_ANOTHER_TUNNEL_IN_THE_WAY;
-		return false;
-	}
-
-	return true;
-}
-
-bool CheckTunnelInWay(TileIndex tile, int z)
-{
-	return
-		DoCheckTunnelInWay(tile, z, DIAGDIR_NE) &&
-		DoCheckTunnelInWay(tile, z, DIAGDIR_SE) &&
-		DoCheckTunnelInWay(tile, z, DIAGDIR_SW) &&
-		DoCheckTunnelInWay(tile, z, DIAGDIR_NW);
-}
-
 
 /** Build Tunnel.
  * @param x,y start tile coord of tunnel
@@ -504,8 +474,8 @@
 
 		if (start_z == end_z) break;
 
-		if (!_cheats.crossing_tunnels.value && !CheckTunnelInWay(end_tile, start_z)) {
-			return CMD_ERROR;
+		if (!_cheats.crossing_tunnels.value && IsTunnelInWay(end_tile, start_z)) {
+			return_cmd_error(STR_5003_ANOTHER_TUNNEL_IN_THE_WAY);
 		}
 
 		cost += _price.build_tunnel;