(svn r13965) -Add [YAPP]: Implement newgrf var 0x44 for stations (PBS reservation state). (michi_cc)
authorrubidium
Sat, 02 Aug 2008 22:57:03 +0000
changeset 9823 352b11cff200
parent 9822 ab2bd3cf424f
child 9824 4db1a1b0ab09
(svn r13965) -Add [YAPP]: Implement newgrf var 0x44 for stations (PBS reservation state). (michi_cc)
src/newgrf_station.cpp
src/pbs.cpp
--- a/src/newgrf_station.cpp	Sat Aug 02 22:56:50 2008 +0000
+++ b/src/newgrf_station.cpp	Sat Aug 02 22:57:03 2008 +0000
@@ -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	Sat Aug 02 22:56:50 2008 +0000
+++ b/src/pbs.cpp	Sat Aug 02 22:57:03 2008 +0000
@@ -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: