equal
deleted
inserted
replaced
3435 if (!TrainCanLeaveTile(v)) return INVALID_TILE; |
3435 if (!TrainCanLeaveTile(v)) return INVALID_TILE; |
3436 |
3436 |
3437 DiagDirection dir = TrainExitDir(v->direction, v->u.rail.track); |
3437 DiagDirection dir = TrainExitDir(v->direction, v->u.rail.track); |
3438 TileIndex tile = v->tile + TileOffsByDiagDir(dir); |
3438 TileIndex tile = v->tile + TileOffsByDiagDir(dir); |
3439 |
3439 |
3440 /* not a crossing || wrong axis || wrong railtype || wrong owner */ |
3440 /* not a crossing || wrong axis || unusable rail (wrong type or owner) */ |
3441 if (!IsLevelCrossingTile(tile) || DiagDirToAxis(dir) == GetCrossingRoadAxis(tile) || |
3441 if (!IsLevelCrossingTile(tile) || DiagDirToAxis(dir) == GetCrossingRoadAxis(tile) || |
3442 !CheckCompatibleRail(v, tile) || GetTileOwner(tile) != v->owner) { |
3442 !CheckCompatibleRail(v, tile)) { |
3443 return INVALID_TILE; |
3443 return INVALID_TILE; |
3444 } |
3444 } |
3445 |
3445 |
3446 return tile; |
3446 return tile; |
3447 } |
3447 } |
3483 TrackBits bits = (TrackBits)((ts | (ts >> 8)) & TRACK_BIT_MASK); |
3483 TrackBits bits = (TrackBits)((ts | (ts >> 8)) & TRACK_BIT_MASK); |
3484 if (_patches.pathfinder_for_trains != VPF_NTP && _patches.forbid_90_deg) { |
3484 if (_patches.pathfinder_for_trains != VPF_NTP && _patches.forbid_90_deg) { |
3485 bits &= ~TrackCrossesTracks(FindFirstTrack(v->u.rail.track)); |
3485 bits &= ~TrackCrossesTracks(FindFirstTrack(v->u.rail.track)); |
3486 } |
3486 } |
3487 |
3487 |
3488 /* no suitable trackbits at all || wrong railtype || not our track */ |
3488 /* no suitable trackbits at all || unusable rail (wrong type or owner) */ |
3489 if (bits == TRACK_BIT_NONE || !CheckCompatibleRail(v, tile) || GetTileOwner(tile) != v->owner) { |
3489 if (bits == TRACK_BIT_NONE || !CheckCompatibleRail(v, tile)) { |
3490 return TrainApproachingLineEnd(v, false); |
3490 return TrainApproachingLineEnd(v, false); |
3491 } |
3491 } |
3492 |
3492 |
3493 /* approaching red signal */ |
3493 /* approaching red signal */ |
3494 if ((ts & (ts >> 16)) != 0) return TrainApproachingLineEnd(v, true); |
3494 if ((ts & (ts >> 16)) != 0) return TrainApproachingLineEnd(v, true); |