rail_cmd.c
branchcustombridgeheads
changeset 5623 ef2a8a524a95
parent 5603 f3aa14b91b0a
child 5632 025c3b25f1fd
--- a/rail_cmd.c	Mon Jan 01 16:10:01 2007 +0000
+++ b/rail_cmd.c	Mon Jan 01 16:31:13 2007 +0000
@@ -279,7 +279,7 @@
 
 			if (flags & DC_EXEC) {
 				SetRailGroundType(tile, RAIL_GROUND_BARREN);
-				_m[tile].m5 |= trackbit;
+				SetTrackBits(tile, GetTrackBits(tile) | trackbit);
 			}
 			break;
 
@@ -1002,9 +1002,6 @@
 {
 	int32 cost;
 	int32 ret;
-	byte m5;
-
-	m5 = _m[tile].m5;
 
 	if (flags & DC_AUTO) {
 		if (!IsTileOwner(tile, _current_player))
@@ -1020,36 +1017,16 @@
 	cost = 0;
 
 	switch (GetRailTileType(tile)) {
-		/* XXX: Why the fuck do we remove these thow signals first? */
 		case RAIL_TILE_SIGNALS:
-			if (HasSignalOnTrack(tile, TRACK_X)) {
-				ret = DoCommand(tile, TRACK_X, 0, flags, CMD_REMOVE_SIGNALS);
-				if (CmdFailed(ret)) return CMD_ERROR;
-				cost += ret;
-			}
-			if (HasSignalOnTrack(tile, TRACK_LOWER)) {
-				ret = DoCommand(tile, TRACK_LOWER, 0, flags, CMD_REMOVE_SIGNALS);
+		case RAIL_TILE_NORMAL: {
+			TrackBits tracks = GetTrackBits(tile);
+			uint i;
+
+			for_each_bit (i, tracks) {
+				ret = DoCommand(tile, 0, i, flags, CMD_REMOVE_SINGLE_RAIL);
 				if (CmdFailed(ret)) return CMD_ERROR;
 				cost += ret;
 			}
-
-			m5 &= TRACK_BIT_MASK;
-			if (!(flags & DC_EXEC)) {
-				for (; m5 != 0; m5 >>= 1) if (m5 & 1) cost += _price.remove_rail;
-				return cost;
-			}
-			/* FALLTHROUGH */
-
-		case RAIL_TILE_NORMAL: {
-			uint i;
-
-			for (i = 0; m5 != 0; i++, m5 >>= 1) {
-				if (m5 & 1) {
-					ret = DoCommand(tile, 0, i, flags, CMD_REMOVE_SINGLE_RAIL);
-					if (CmdFailed(ret)) return CMD_ERROR;
-					cost += ret;
-				}
-			}
 			return cost;
 		}