Merge branch 'signal_tunnels_bridges-sx' into jgrpp

pull/8/head
Jonathan G Rennison 8 years ago
commit cf59b4fcab

@ -144,6 +144,7 @@ bool TryReserveRailTrack(TileIndex tile, Track t, bool trigger_stations)
if (GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL && !GetTunnelBridgeReservationTrackBits(tile)) {
SetTunnelBridgeReservation(tile, true);
if (IsTunnelBridgeExit(tile) && IsTunnelBridgePBS(tile)) SetTunnelBridgeExitGreen(tile, true);
MarkTileDirtyByTile(tile, ZOOM_LVL_DRAW_MAP);
return true;
}
break;
@ -213,6 +214,7 @@ void UnreserveRailTrack(TileIndex tile, Track t)
if (GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL) {
SetTunnelBridgeReservation(tile, false);
if (IsTunnelBridgeExit(tile) && IsTunnelBridgePBS(tile)) SetTunnelBridgeExitGreen(tile, false);
MarkTileDirtyByTile(tile, ZOOM_LVL_DRAW_MAP);
}
break;
@ -307,6 +309,14 @@ static Vehicle *FindTrainOnTrackEnum(Vehicle *v, void *data)
if (v->type != VEH_TRAIN || (v->vehstatus & VS_CRASHED)) return NULL;
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))) {
t = t->First();

@ -3445,6 +3445,7 @@ static bool CheckTrainStayInWormHolePathReserve(Train *t, TileIndex tile)
if (reserved == TRACKDIR_BIT_NONE) {
/* next tile is not reserved, so reserve the exit tile */
SetTunnelBridgeReservation(tile, true);
MarkTileDirtyByTile(tile, ZOOM_LVL_DRAW_MAP);
}
}
bool ok = TryPathReserve(t);

Loading…
Cancel
Save