(svn r7643) [cbh] - Codechange: Railway bridges now store track bits just like normal rail tiles. For railway bridges, GetTileTrackStatus_Bridge just calls GetTileTrackStatus_Track
--- a/bridge_cmd.c Fri Dec 29 12:45:44 2006 +0000
+++ b/bridge_cmd.c Sat Dec 30 11:57:57 2006 +0000
@@ -921,6 +921,8 @@
static uint32 GetTileTrackStatus_Bridge(TileIndex tile, TransportType mode)
{
if (GetBridgeTransportType(tile) != mode) return 0;
+
+ if (IsTileType(tile, MP_RAILWAY_BRIDGE)) return GetTileTrackStatus_Track(tile, mode);
return AxisToTrackBits(DiagDirToAxis(GetBridgeRampDirection(tile))) * 0x101;
}
--- a/openttd.c Fri Dec 29 12:45:44 2006 +0000
+++ b/openttd.c Sat Dec 30 11:57:57 2006 +0000
@@ -1355,15 +1355,21 @@
for (tile = 0; tile != MapSize(); tile++) {
if (IsTileType(tile, MP_TUNNEL)) {
if (HASBIT(_m[tile].m5, 7)) { /* Bridge */
+ DiagDirection dd = GB(_m[tile].m5, 0, 2);
+ SB(_m[tile].m5, 0, 2, 0);
if (GB(_m[tile].m5, 2, 2) == 0) { /* Railway Bridge */
SetTileType(tile, MP_RAILWAY_BRIDGE);
+ if (dd == DIAGDIR_NE || dd == DIAGDIR_SW) {
+ SETBIT(_m[tile].m5, 0);
+ } else {
+ SETBIT(_m[tile].m5, 1);
+ }
} else {
SetTileType(tile, MP_STREET_BRIDGE);
}
CLRBIT(_m[tile].m5, 7);
SB(_m[tile].m5, 2, 2, 0);
- SB(_m[tile].m4, 5, 2, GB(_m[tile].m5, 0, 2));
- SB(_m[tile].m5, 0, 2, 0);
+ SB(_m[tile].m4, 5, 2, dd);
} else { /* Tunnel */
SetTileType(tile, MP_TUNNEL);
}
--- a/rail.h Fri Dec 29 12:45:44 2006 +0000
+++ b/rail.h Sat Dec 30 11:57:57 2006 +0000
@@ -465,6 +465,7 @@
void DrawCatenary(const TileInfo *ti);
uint GetRailFoundation(Slope tileh, TrackBits bits);
+uint32 GetTileTrackStatus_Track(TileIndex tile, TransportType mode);
int32 SettingsDisableElrail(int32 p1); ///< _patches.disable_elrail callback
--- a/rail_cmd.c Fri Dec 29 12:45:44 2006 +0000
+++ b/rail_cmd.c Sat Dec 30 11:57:57 2006 +0000
@@ -1843,7 +1843,7 @@
}
-static uint32 GetTileTrackStatus_Track(TileIndex tile, TransportType mode)
+uint32 GetTileTrackStatus_Track(TileIndex tile, TransportType mode)
{
byte a;
uint16 b;
--- a/rail_map.h Fri Dec 29 12:45:44 2006 +0000
+++ b/rail_map.h Sat Dec 30 11:57:57 2006 +0000
@@ -18,7 +18,7 @@
static inline RailTileType GetRailTileType(TileIndex t)
{
- assert(IsTileType(t, MP_RAILWAY));
+ assert(IsTileType(t, MP_RAILWAY) || IsTileType(t, MP_RAILWAY_BRIDGE));
return (RailTileType)(_m[t].m5 & RAIL_TILE_TYPE_MASK);
}