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: