summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2008-08-02 22:57:03 +0000
committerrubidium <rubidium@openttd.org>2008-08-02 22:57:03 +0000
commit88b1ee0b436e0c8590ea4803d168b8c953018fa4 (patch)
tree109a88baeefba47c5aa317c3e219ea77bceebf2d /src
parent1e2c61360b0d5217947630334b4f8a5bba1243f3 (diff)
downloadopenttd-88b1ee0b436e0c8590ea4803d168b8c953018fa4.tar.xz
(svn r13965) -Add [YAPP]: Implement newgrf var 0x44 for stations (PBS reservation state). (michi_cc)
Diffstat (limited to 'src')
-rw-r--r--src/newgrf_station.cpp8
-rw-r--r--src/pbs.cpp14
2 files changed, 18 insertions, 4 deletions
diff --git a/src/newgrf_station.cpp b/src/newgrf_station.cpp
index b63703206..87e98ef91 100644
--- 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 @@ static uint32 StationGetVariable(const ResolverObject *object, byte variable, by
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;
diff --git a/src/pbs.cpp b/src/pbs.cpp
index 12e54d7f4..04b956fbd 100644
--- a/src/pbs.cpp
+++ b/src/pbs.cpp
@@ -66,7 +66,7 @@ void SetRailwayStationPlatformReservation(TileIndex start, DiagDirection dir, bo
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 @@ bool TryReserveRailTrack(TileIndex tile, Track t)
if (IsRailWaypoint(tile) || IsRailDepot(tile)) {
if (!GetDepotWaypointReservation(tile)) {
SetDepotWaypointReservation(tile, true);
+ MarkTileDirtyByTile(tile);
return true;
}
}
@@ -107,6 +108,7 @@ bool TryReserveRailTrack(TileIndex tile, Track t)
case MP_STATION:
if (IsRailwayStation(tile) && !GetRailwayStationReservation(tile)) {
SetRailwayStationReservation(tile, true);
+ MarkTileDirtyByTile(tile);
return true;
}
break;
@@ -139,7 +141,10 @@ bool TryReserveRailTrack(TileIndex tile, Track t)
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 @@ bool TryReserveRailTrack(TileIndex tile, Track t)
break;
case MP_STATION:
- if (IsRailwayStation(tile)) SetRailwayStationReservation(tile, false);
+ if (IsRailwayStation(tile)) {
+ SetRailwayStationReservation(tile, false);
+ MarkTileDirtyByTile(tile);
+ }
break;
case MP_TUNNELBRIDGE: