Mercurial > hg > openttd
changeset 9823:7e2bcaec0fc7 draft
(svn r13965) -Add [YAPP]: Implement newgrf var 0x44 for stations (PBS reservation state). (michi_cc)
author | rubidium <rubidium@openttd.org> |
---|---|
date | Sat, 02 Aug 2008 22:57:03 +0000 |
parents | d61801babe63 |
children | fe3562a51648 |
files | src/newgrf_station.cpp src/pbs.cpp |
diffstat | 2 files changed, 18 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/newgrf_station.cpp +++ b/src/newgrf_station.cpp @@ -26,6 +26,7 @@ #include "animated_tile_func.h" #include "functions.h" #include "tunnelbridge_map.h" +#include "rail_map.h" #include "table/sprites.h" #include "table/strings.h" @@ -405,7 +406,12 @@ case 0x42: return GetTerrainType(tile) | (GetRailType(tile) << 8); case 0x43: return st->owner; // Station owner - case 0x44: return 2; // PBS status + case 0x44: + if (IsTileType(tile, MP_RAILWAY) && IsRailWaypoint(tile)) { + return GetDepotWaypointReservation(tile) ? 7 : 4; + } else { + return GetRailwayStationReservation(tile) ? 7 : 4; // PBS status + } case 0x45: if (!HasBit(_svc.valid, 2)) { _svc.v45 = GetRailContinuationInfo(tile); SetBit(_svc.valid, 2); } return _svc.v45;
--- a/src/pbs.cpp +++ b/src/pbs.cpp @@ -66,7 +66,7 @@ do { SetRailwayStationReservation(tile, b); - if (_settings_client.gui.show_track_reservation) MarkTileDirtyByTile(tile); + MarkTileDirtyByTile(tile); tile = TILE_ADD(tile, diff); } while (IsCompatibleTrainStationTile(tile, start)); } @@ -92,6 +92,7 @@ if (IsRailWaypoint(tile) || IsRailDepot(tile)) { if (!GetDepotWaypointReservation(tile)) { SetDepotWaypointReservation(tile, true); + MarkTileDirtyByTile(tile); return true; } } @@ -107,6 +108,7 @@ case MP_STATION: if (IsRailwayStation(tile) && !GetRailwayStationReservation(tile)) { SetRailwayStationReservation(tile, true); + MarkTileDirtyByTile(tile); return true; } break; @@ -139,7 +141,10 @@ switch (GetTileType(tile)) { case MP_RAILWAY: - if (IsRailWaypoint(tile) || IsRailDepot(tile)) SetDepotWaypointReservation(tile, false); + if (IsRailWaypoint(tile) || IsRailDepot(tile)) { + SetDepotWaypointReservation(tile, false); + MarkTileDirtyByTile(tile); + } if (IsPlainRailTile(tile)) UnreserveTrack(tile, t); break; @@ -148,7 +153,10 @@ break; case MP_STATION: - if (IsRailwayStation(tile)) SetRailwayStationReservation(tile, false); + if (IsRailwayStation(tile)) { + SetRailwayStationReservation(tile, false); + MarkTileDirtyByTile(tile); + } break; case MP_TUNNELBRIDGE: