mirror of https://github.com/OpenTTD/OpenTTD
(svn r13965) -Add [YAPP]: Implement newgrf var 0x44 for stations (PBS reservation state). (michi_cc)
parent
1e2c61360b
commit
88b1ee0b43
|
@ -26,6 +26,7 @@
|
||||||
#include "animated_tile_func.h"
|
#include "animated_tile_func.h"
|
||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
#include "tunnelbridge_map.h"
|
#include "tunnelbridge_map.h"
|
||||||
|
#include "rail_map.h"
|
||||||
|
|
||||||
#include "table/sprites.h"
|
#include "table/sprites.h"
|
||||||
#include "table/strings.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 0x42: return GetTerrainType(tile) | (GetRailType(tile) << 8);
|
||||||
case 0x43: return st->owner; // Station owner
|
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:
|
case 0x45:
|
||||||
if (!HasBit(_svc.valid, 2)) { _svc.v45 = GetRailContinuationInfo(tile); SetBit(_svc.valid, 2); }
|
if (!HasBit(_svc.valid, 2)) { _svc.v45 = GetRailContinuationInfo(tile); SetBit(_svc.valid, 2); }
|
||||||
return _svc.v45;
|
return _svc.v45;
|
||||||
|
|
14
src/pbs.cpp
14
src/pbs.cpp
|
@ -66,7 +66,7 @@ void SetRailwayStationPlatformReservation(TileIndex start, DiagDirection dir, bo
|
||||||
|
|
||||||
do {
|
do {
|
||||||
SetRailwayStationReservation(tile, b);
|
SetRailwayStationReservation(tile, b);
|
||||||
if (_settings_client.gui.show_track_reservation) MarkTileDirtyByTile(tile);
|
MarkTileDirtyByTile(tile);
|
||||||
tile = TILE_ADD(tile, diff);
|
tile = TILE_ADD(tile, diff);
|
||||||
} while (IsCompatibleTrainStationTile(tile, start));
|
} while (IsCompatibleTrainStationTile(tile, start));
|
||||||
}
|
}
|
||||||
|
@ -92,6 +92,7 @@ bool TryReserveRailTrack(TileIndex tile, Track t)
|
||||||
if (IsRailWaypoint(tile) || IsRailDepot(tile)) {
|
if (IsRailWaypoint(tile) || IsRailDepot(tile)) {
|
||||||
if (!GetDepotWaypointReservation(tile)) {
|
if (!GetDepotWaypointReservation(tile)) {
|
||||||
SetDepotWaypointReservation(tile, true);
|
SetDepotWaypointReservation(tile, true);
|
||||||
|
MarkTileDirtyByTile(tile);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -107,6 +108,7 @@ bool TryReserveRailTrack(TileIndex tile, Track t)
|
||||||
case MP_STATION:
|
case MP_STATION:
|
||||||
if (IsRailwayStation(tile) && !GetRailwayStationReservation(tile)) {
|
if (IsRailwayStation(tile) && !GetRailwayStationReservation(tile)) {
|
||||||
SetRailwayStationReservation(tile, true);
|
SetRailwayStationReservation(tile, true);
|
||||||
|
MarkTileDirtyByTile(tile);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -139,7 +141,10 @@ bool TryReserveRailTrack(TileIndex tile, Track t)
|
||||||
|
|
||||||
switch (GetTileType(tile)) {
|
switch (GetTileType(tile)) {
|
||||||
case MP_RAILWAY:
|
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);
|
if (IsPlainRailTile(tile)) UnreserveTrack(tile, t);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -148,7 +153,10 @@ bool TryReserveRailTrack(TileIndex tile, Track t)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MP_STATION:
|
case MP_STATION:
|
||||||
if (IsRailwayStation(tile)) SetRailwayStationReservation(tile, false);
|
if (IsRailwayStation(tile)) {
|
||||||
|
SetRailwayStationReservation(tile, false);
|
||||||
|
MarkTileDirtyByTile(tile);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MP_TUNNELBRIDGE:
|
case MP_TUNNELBRIDGE:
|
||||||
|
|
Loading…
Reference in New Issue