(svn r3659) Add function to get the road bits of a level crossing
authortron
Thu, 23 Feb 2006 11:53:48 +0000
changeset 3070 512f72481fd9
parent 3069 0e6aca11c3da
child 3071 a6acfe74e0a7
(svn r3659) Add function to get the road bits of a level crossing
road.h
road_cmd.c
--- a/road.h	Thu Feb 23 08:20:28 2006 +0000
+++ b/road.h	Thu Feb 23 11:53:48 2006 +0000
@@ -20,6 +20,11 @@
 	return GB(_m[tile].m5, 0, 4);
 }
 
+static inline RoadBits GetCrossingRoadBits(TileIndex tile)
+{
+	return _m[tile].m5 & 8 ? ROAD_Y : ROAD_X;
+}
+
 typedef enum RoadType {
 	ROAD_NORMAL,
 	ROAD_CROSSING,
--- a/road_cmd.c	Thu Feb 23 08:20:28 2006 +0000
+++ b/road_cmd.c	Thu Feb 23 11:53:48 2006 +0000
@@ -34,7 +34,7 @@
 		case MP_STREET:
 			switch (GetRoadType(tile)) {
 				case ROAD_NORMAL:   b = GetRoadBits(tile); break;
-				case ROAD_CROSSING: b = (_m[tile].m5 & 8 ? ROAD_Y : ROAD_X); break;
+				case ROAD_CROSSING: b = GetCrossingRoadBits(tile); break;
 				case ROAD_DEPOT:    return (~_m[tile].m5 & 3) == i;
 				default:            return false;
 			}
@@ -709,7 +709,7 @@
 
 			if (flags & DC_AUTO) return_cmd_error(STR_1801_MUST_REMOVE_ROAD_FIRST);
 
-			ret = DoCommandByTile(tile, (_m[tile].m5 & 8 ? ROAD_Y : ROAD_X), 0, flags, CMD_REMOVE_ROAD);
+			ret = DoCommandByTile(tile, GetCrossingRoadBits(tile), 0, flags, CMD_REMOVE_ROAD);
 			if (CmdFailed(ret)) return CMD_ERROR;
 
 			if (flags & DC_EXEC) {
@@ -1212,10 +1212,10 @@
 				break;
 
 			case ROAD_CROSSING:
-				_m[tile].m5 = (_m[tile].m5&8) ? 0x5 : 0xA;
 				SetTileOwner(tile, _m[tile].m3);
 				_m[tile].m3 = 0;
 				_m[tile].m4 &= 0x80;
+				_m[tile].m5 = GetCrossingRoadBits(tile);
 				break;
 
 			default: