From 5db883fbe9b8ef6171bfafc145a80932c3920504 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sun, 22 Jul 2018 23:47:15 +0100 Subject: [PATCH] Change: Move rail type bits from m3 to m8. --- docs/landscape.html | 12 ++++++------ docs/landscape_grid.html | 22 +++++++++++----------- src/bridge_map.h | 3 ++- src/rail_map.h | 10 ++++++---- src/road_map.h | 3 ++- src/saveload/afterload.cpp | 32 ++++++++++++++++++++++++++++++++ src/saveload/saveload.cpp | 3 ++- src/tunnel_map.h | 4 +++- 8 files changed, 64 insertions(+), 25 deletions(-) diff --git a/docs/landscape.html b/docs/landscape.html index f60e859fc3..55f560254b 100644 --- a/docs/landscape.html +++ b/docs/landscape.html @@ -226,7 +226,7 @@
  • m1 bits 4..0: owner of the tile
  • m2: see signals
  • m3 bits 7..4: see signals
  • -
  • m3 bits 3..0 = track type: +
  • m8 bits 3..0 = track type: @@ -626,7 +626,8 @@
  • m5 bit 6 set: level crossing
    • m1 bits 4..0: owner of the railway track
    • -
    • m3 bits 3..0: railway track type
    • +
    • m5 bit 5: set if crossing lights are on
    • +
    • m5 bit 4: pbs reservation state
    • m5 bit 0: direction
  • 0 
    @@ -639,9 +640,8 @@
  • -
  • m5 bit 5: set if crossing lights are on
  • m7 bits 4..0: owner of the road type 0 (normal road)
  • -
  • m5 bit 4: pbs reservation state
  • +
  • m8 bits 3..0: railway track type
  • @@ -860,7 +860,6 @@
  • m2: index into the array of stations
  • m3 bits 7..4: persistent random data for railway stations/waypoints and airports)
  • m3 bits 7..4: owner of tram tracks (road stop)
  • -
  • m3 bits 3..0: track type for railway stations/waypoints
  • m4: custom station id; 0 means standard graphics
  • m5: graphics index (range from 0..255 for each station type): @@ -979,6 +978,7 @@
  • m7 bits 4..0: owner of road (road stops)
  • m7 bits 7..6: present road types (road stops)
  • m7: animation frame (railway stations/waypoints, airports)
  • +
  • m8 bits 3..0: track type for railway stations/waypoints
  • @@ -1444,7 +1444,6 @@ diff --git a/docs/landscape_grid.html b/docs/landscape_grid.html index f5404a5777..757a574176 100644 --- a/docs/landscape_grid.html +++ b/docs/landscape_grid.html @@ -102,12 +102,12 @@ the array so you can quickly see what is used and what is not. - + - + @@ -115,7 +115,7 @@ the array so you can quickly see what is used and what is not. - + @@ -128,7 +128,7 @@ the array so you can quickly see what is used and what is not. - + @@ -155,12 +155,12 @@ the array so you can quickly see what is used and what is not. - + - + - + @@ -210,12 +210,12 @@ the array so you can quickly see what is used and what is not. - + - + @@ -356,12 +356,12 @@ the array so you can quickly see what is used and what is not. - + - + diff --git a/src/bridge_map.h b/src/bridge_map.h index 74c6974db2..75b20498d1 100644 --- a/src/bridge_map.h +++ b/src/bridge_map.h @@ -131,11 +131,12 @@ static inline void MakeBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, D SetTileType(t, MP_TUNNELBRIDGE); SetTileOwner(t, o); _m[t].m2 = 0; - _m[t].m3 = rt; + _m[t].m3 = 0; _m[t].m4 = 0; _m[t].m5 = 1 << 7 | tt << 2 | d; SB(_me[t].m6, 2, 4, bridgetype); _me[t].m7 = 0; + _me[t].m8 = rt; } /** diff --git a/src/rail_map.h b/src/rail_map.h index 2431a79202..bd580d32a6 100644 --- a/src/rail_map.h +++ b/src/rail_map.h @@ -115,7 +115,7 @@ static inline bool IsRailDepotTile(TileIndex t) */ static inline RailType GetRailType(TileIndex t) { - return (RailType)GB(_m[t].m3, 0, 4); + return (RailType)GB(_me[t].m8, 0, 4); } /** @@ -125,7 +125,7 @@ static inline RailType GetRailType(TileIndex t) */ static inline void SetRailType(TileIndex t, RailType r) { - SB(_m[t].m3, 0, 4, r); + SB(_me[t].m8, 0, 4, r); } @@ -522,11 +522,12 @@ static inline void MakeRailNormal(TileIndex t, Owner o, TrackBits b, RailType r) SetTileType(t, MP_RAILWAY); SetTileOwner(t, o); _m[t].m2 = 0; - _m[t].m3 = r; + _m[t].m3 = 0; _m[t].m4 = 0; _m[t].m5 = RAIL_TILE_NORMAL << 6 | b; SB(_me[t].m6, 2, 4, 0); _me[t].m7 = 0; + _me[t].m8 = r; } @@ -535,11 +536,12 @@ static inline void MakeRailDepot(TileIndex t, Owner o, DepotID did, DiagDirectio SetTileType(t, MP_RAILWAY); SetTileOwner(t, o); _m[t].m2 = did; - _m[t].m3 = r; + _m[t].m3 = 0; _m[t].m4 = 0; _m[t].m5 = RAIL_TILE_DEPOT << 6 | d; SB(_me[t].m6, 2, 4, 0); _me[t].m7 = 0; + _me[t].m8 = r; } #endif /* RAIL_MAP_H */ diff --git a/src/road_map.h b/src/road_map.h index 693730294e..5b3e6b0900 100644 --- a/src/road_map.h +++ b/src/road_map.h @@ -579,11 +579,12 @@ static inline void MakeRoadCrossing(TileIndex t, Owner road, Owner tram, Owner r SetTileType(t, MP_ROAD); SetTileOwner(t, rail); _m[t].m2 = town; - _m[t].m3 = rat; + _m[t].m3 = 0; _m[t].m4 = 0; _m[t].m5 = ROAD_TILE_CROSSING << 6 | roaddir; SB(_me[t].m6, 2, 4, 0); _me[t].m7 = rot << 6 | road; + _me[t].m8 = rat; SetRoadOwner(t, ROADTYPE_TRAM, tram); } diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index 33c49fb61e..cca9ad328a 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -1214,6 +1214,38 @@ bool AfterLoadGame() } } + /* Railtype moved from m3 to m8 in version 200. */ + if (IsSavegameVersionBefore(200)) { + for (TileIndex t = 0; t < map_size; t++) { + switch (GetTileType(t)) { + case MP_RAILWAY: + SetRailType(t, (RailType)GB(_m[t].m3, 0, 4)); + break; + + case MP_ROAD: + if (IsLevelCrossing(t)) { + SetRailType(t, (RailType)GB(_m[t].m3, 0, 4)); + } + break; + + case MP_STATION: + if (HasStationRail(t)) { + SetRailType(t, (RailType)GB(_m[t].m3, 0, 4)); + } + break; + + case MP_TUNNELBRIDGE: + if (GetTunnelBridgeTransportType(t) == TRANSPORT_RAIL) { + SetRailType(t, (RailType)GB(_m[t].m3, 0, 4)); + } + break; + + default: + break; + } + } + } + /* Elrails got added in rev 24 */ if (IsSavegameVersionBefore(24)) { RailType min_rail = RAILTYPE_ELECTRIC; diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index 692f73cf2d..d02dfcbc6e 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -267,8 +267,9 @@ * 197 27978 1.8.x * 198 * 199 + * 200 */ -extern const uint16 SAVEGAME_VERSION = 199; ///< Current savegame version of OpenTTD. +extern const uint16 SAVEGAME_VERSION = 200; ///< Current savegame version of OpenTTD. SavegameType _savegame_type; ///< type of savegame we are loading FileToSaveLoad _file_to_saveload; ///< File to save or load in the openttd loop. diff --git a/src/tunnel_map.h b/src/tunnel_map.h index e200a1275e..d6f475d05c 100644 --- a/src/tunnel_map.h +++ b/src/tunnel_map.h @@ -58,6 +58,7 @@ static inline void MakeRoadTunnel(TileIndex t, Owner o, DiagDirection d, RoadTyp _m[t].m5 = TRANSPORT_ROAD << 2 | d; SB(_me[t].m6, 2, 4, 0); _me[t].m7 = 0; + _me[t].m8 = 0; SetRoadOwner(t, ROADTYPE_ROAD, o); if (o != OWNER_TOWN) SetRoadOwner(t, ROADTYPE_TRAM, o); SetRoadTypes(t, r); @@ -75,11 +76,12 @@ static inline void MakeRailTunnel(TileIndex t, Owner o, DiagDirection d, RailTyp SetTileType(t, MP_TUNNELBRIDGE); SetTileOwner(t, o); _m[t].m2 = 0; - _m[t].m3 = r; + _m[t].m3 = 0; _m[t].m4 = 0; _m[t].m5 = TRANSPORT_RAIL << 2 | d; SB(_me[t].m6, 2, 4, 0); _me[t].m7 = 0; + _me[t].m8 = r; } #endif /* TUNNEL_MAP_H */
    XXXX XXXX OOOX XXXX OOOO XXXX OOOO OOOOOOOO XXXXOOOO OOOO OOOO XXXX XXXX XXXX OOOO OOOO OOOO OOOOOOOO OOOO OOOO OOOOOOOO OOOO OOOO XXXX
    rail with signals-inherit- -inherit- OOOO XXXX XXXX XXXXXXXX XXXXXXXX OOOO XXXX XXXX -inherit- OOOO OOOO-inherit- -inherit- XXXX XXXX XXXX XXXXOOOO XXXX-inherit- OOOO XXXX XXOX OOXX OOOO OOOO-inherit- -inherit- -inherit-XXXX XXXXXXXX OOOO -inherit-XXXX OOOXXXXX OOOX OOXX XOOO XXXX XXXX-inherit-OOOO OOOO OOOO XXXX
    road depotXXXX XXXX OXXX XXXX XXXX XXXX XXXX XXXXXXXX XXXXXXXX OOOO XXXX XXXX XXXX XXXX OOXX XXOO XXXX XXXXOOOO OOOO OOOO OOOOOOOO OOOO OOOO XXXX
    rail waypointXXXX XXXX OOOX XXXX OOOO OOOO OOOO OOOOXXXX XXXXXXXX OOOO OOOO OOOO XOOX XXXX OOOO OOOO XXXX XXXXOOOO OOOO OOOO OOOOOOOO OOOO OOOO XXXX
    bridge ramp