(svn r13965) -Add [YAPP]: Implement newgrf var 0x44 for stations (PBS reservation state). (michi_cc)

This commit is contained in:
rubidium 2008-08-02 22:57:03 +00:00
parent 1e2c61360b
commit 88b1ee0b43
2 changed files with 18 additions and 4 deletions

View File

@ -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;

View File

@ -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: