mirror of https://github.com/OpenTTD/OpenTTD
(svn r13687) [0.6] -Backport from trunk:
- Fix: Signals were not updated correctly when a player removed a non-existing track piece (r13626) - Fix: Signal states could be propagated through waypoints built in orthogonal axis (r13589) - Fix: Track was not removed on company bankrupcy when there was a ship on lower halftile (r13488) - Fix: Let ships also navigate on half-tile sloped watery rail tiles (r13485)release/0.6
parent
4f76d929c6
commit
a68eee5f31
|
@ -1107,6 +1107,7 @@ CommandCost CmdRemoveSingleSignal(TileIndex tile, uint32 flags, uint32 p1, uint3
|
|||
|
||||
if (!ValParamTrackOrientation(track) ||
|
||||
!IsTileType(tile, MP_RAILWAY) ||
|
||||
!HasTrack(tile, track) ||
|
||||
!EnsureNoTrainOnTrack(tile, track) ||
|
||||
!HasSignalOnTrack(tile, track)) {
|
||||
return CMD_ERROR;
|
||||
|
@ -1376,7 +1377,10 @@ static CommandCost ClearTile_Track(TileIndex tile, byte flags)
|
|||
cost.AddCost(ret);
|
||||
}
|
||||
|
||||
if (water_ground) {
|
||||
/* when bankrupting, don't make water dirty, there could be a ship on lower halftile */
|
||||
if (water_ground && !(flags & DC_BANKRUPT)) {
|
||||
if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
|
||||
|
||||
/* The track was removed, and left a coast tile. Now also clear the water. */
|
||||
if (flags & DC_EXEC) DoClearSquare(tile);
|
||||
cost.AddCost(_price.clear_water);
|
||||
|
@ -2098,6 +2102,19 @@ set_ground:
|
|||
|
||||
static TrackStatus GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
{
|
||||
/* Case of half tile slope with water. */
|
||||
if (mode == TRANSPORT_WATER && IsPlainRailTile(tile) && GetRailGroundType(tile) == RAIL_GROUND_WATER) {
|
||||
TrackBits tb = GetTrackBits(tile);
|
||||
switch (tb) {
|
||||
default: NOT_REACHED();
|
||||
case TRACK_BIT_UPPER: tb = TRACK_BIT_LOWER; break;
|
||||
case TRACK_BIT_LOWER: tb = TRACK_BIT_UPPER; break;
|
||||
case TRACK_BIT_LEFT: tb = TRACK_BIT_RIGHT; break;
|
||||
case TRACK_BIT_RIGHT: tb = TRACK_BIT_LEFT; break;
|
||||
}
|
||||
return CombineTrackStatus(TrackBitsToTrackdirBits(tb), TRACKDIR_BIT_NONE);
|
||||
}
|
||||
|
||||
if (mode != TRANSPORT_RAIL) return 0;
|
||||
|
||||
TrackBits trackbits = TRACK_BIT_NONE;
|
||||
|
|
|
@ -298,6 +298,7 @@ static SigFlags ExploreSegment(Owner owner)
|
|||
}
|
||||
|
||||
if (GetRailTileType(tile) == RAIL_TILE_WAYPOINT) {
|
||||
if (GetWaypointAxis(tile) != DiagDirToAxis(enterdir)) continue;
|
||||
if (!(flags & SF_TRAIN) && VehicleFromPos(tile, NULL, &TrainOnTileEnum)) flags |= SF_TRAIN;
|
||||
tile += TileOffsByDiagDir(exitdir);
|
||||
/* enterdir and exitdir stay the same */
|
||||
|
|
Loading…
Reference in New Issue