Merge branch 'signal_tunnels_bridges-sx' into jgrpp
This commit is contained in:
10
src/pbs.cpp
10
src/pbs.cpp
@@ -144,6 +144,7 @@ bool TryReserveRailTrack(TileIndex tile, Track t, bool trigger_stations)
|
|||||||
if (GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL && !GetTunnelBridgeReservationTrackBits(tile)) {
|
if (GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL && !GetTunnelBridgeReservationTrackBits(tile)) {
|
||||||
SetTunnelBridgeReservation(tile, true);
|
SetTunnelBridgeReservation(tile, true);
|
||||||
if (IsTunnelBridgeExit(tile) && IsTunnelBridgePBS(tile)) SetTunnelBridgeExitGreen(tile, true);
|
if (IsTunnelBridgeExit(tile) && IsTunnelBridgePBS(tile)) SetTunnelBridgeExitGreen(tile, true);
|
||||||
|
MarkTileDirtyByTile(tile, ZOOM_LVL_DRAW_MAP);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -213,6 +214,7 @@ void UnreserveRailTrack(TileIndex tile, Track t)
|
|||||||
if (GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL) {
|
if (GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL) {
|
||||||
SetTunnelBridgeReservation(tile, false);
|
SetTunnelBridgeReservation(tile, false);
|
||||||
if (IsTunnelBridgeExit(tile) && IsTunnelBridgePBS(tile)) SetTunnelBridgeExitGreen(tile, false);
|
if (IsTunnelBridgeExit(tile) && IsTunnelBridgePBS(tile)) SetTunnelBridgeExitGreen(tile, false);
|
||||||
|
MarkTileDirtyByTile(tile, ZOOM_LVL_DRAW_MAP);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -307,6 +309,14 @@ static Vehicle *FindTrainOnTrackEnum(Vehicle *v, void *data)
|
|||||||
if (v->type != VEH_TRAIN || (v->vehstatus & VS_CRASHED)) return NULL;
|
if (v->type != VEH_TRAIN || (v->vehstatus & VS_CRASHED)) return NULL;
|
||||||
|
|
||||||
Train *t = Train::From(v);
|
Train *t = Train::From(v);
|
||||||
|
if (t->track == TRACK_BIT_WORMHOLE) {
|
||||||
|
/* Do not find trains inside signalled bridge/tunnels.
|
||||||
|
* Trains on the ramp/entrance itself are found though.
|
||||||
|
*/
|
||||||
|
if (IsTileType(info->res.tile, MP_TUNNELBRIDGE) && HasWormholeSignals(info->res.tile) && info->res.tile != TileVirtXY(t->x_pos, t->y_pos)) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (t->track == TRACK_BIT_WORMHOLE || HasBit((TrackBits)t->track, TrackdirToTrack(info->res.trackdir))) {
|
if (t->track == TRACK_BIT_WORMHOLE || HasBit((TrackBits)t->track, TrackdirToTrack(info->res.trackdir))) {
|
||||||
t = t->First();
|
t = t->First();
|
||||||
|
|
||||||
|
@@ -3445,6 +3445,7 @@ static bool CheckTrainStayInWormHolePathReserve(Train *t, TileIndex tile)
|
|||||||
if (reserved == TRACKDIR_BIT_NONE) {
|
if (reserved == TRACKDIR_BIT_NONE) {
|
||||||
/* next tile is not reserved, so reserve the exit tile */
|
/* next tile is not reserved, so reserve the exit tile */
|
||||||
SetTunnelBridgeReservation(tile, true);
|
SetTunnelBridgeReservation(tile, true);
|
||||||
|
MarkTileDirtyByTile(tile, ZOOM_LVL_DRAW_MAP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool ok = TryPathReserve(t);
|
bool ok = TryPathReserve(t);
|
||||||
|
Reference in New Issue
Block a user