(svn r3984) Add a function to get the road axis of a level crossing
authortron
Sun, 19 Mar 2006 17:15:33 +0000
changeset 3272 7e556f209503
parent 3271 0e796a2b7c9e
child 3273 7303df652359
(svn r3984) Add a function to get the road axis of a level crossing
road_cmd.c
road_map.h
--- a/road_cmd.c	Sun Mar 19 16:57:48 2006 +0000
+++ b/road_cmd.c	Sun Mar 19 17:15:33 2006 +0000
@@ -778,7 +778,7 @@
 
 			image = GetRailTypeInfo(GetRailTypeCrossing(ti->tile))->base_sprites.crossing;
 
-			if (GB(ti->map5, 3, 1) == 0) image++; /* direction */
+			if (GetCrossingRoadAxis(ti->tile) == AXIS_X) image++;
 
 			if ((ti->map5 & 4) != 0) image += 2;
 
@@ -1048,7 +1048,8 @@
 						0 : _road_trackbits[GetRoadBits(tile)] * 0x101;
 
 				case ROAD_CROSSING: {
-					uint32 r = (_m[tile].m5 & 8 ? 0x202 : 0x101);
+					uint32 r = (GetCrossingRoadAxis(tile) == AXIS_X ? TRACK_BIT_X : TRACK_BIT_Y) * 0x101;
+
 					if (_m[tile].m5 & 4) r *= 0x10001;
 					return r;
 				}
--- a/road_map.h	Sun Mar 19 16:57:48 2006 +0000
+++ b/road_map.h	Sun Mar 19 17:15:33 2006 +0000
@@ -39,14 +39,19 @@
 }
 
 
+static inline Axis GetCrossingRoadAxis(TileIndex tile)
+{
+	return (Axis)GB(_m[tile].m5, 3, 1);
+}
+
 static inline RoadBits GetCrossingRoadBits(TileIndex tile)
 {
-	return _m[tile].m5 & 8 ? ROAD_Y : ROAD_X;
+	return GetCrossingRoadAxis(tile) == AXIS_X ? ROAD_X : ROAD_Y;
 }
 
 static inline TrackBits GetCrossingRailBits(TileIndex tile)
 {
-	return _m[tile].m5 & 8 ? TRACK_BIT_X : TRACK_BIT_Y;
+	return GetCrossingRoadAxis(tile) == AXIS_X ? TRACK_BIT_Y : TRACK_BIT_X;
 }