Tracerestrict: Import "Long Reserve" feature.

https://github.com/KeldorKatarn/OpenTTD_PatchPack

Minor code de-duplications.
This commit is contained in:
patch-import
2016-01-14 22:00:30 +00:00
committed by Jonathan G Rennison
parent b5b06351ac
commit 82cab7f31c
6 changed files with 188 additions and 45 deletions

View File

@@ -393,7 +393,7 @@ Train *GetTrainForReservation(TileIndex tile, Track track)
* This is called to retrieve the previous signal, as required
* This is not run all the time as it is somewhat expensive and most restrictions will not test for the previous signal
*/
static TileIndex IsSafeWaitingPositionTraceRestrictPreviousSignalCallback(const Train *v, const void *)
TileIndex VehiclePosTraceRestrictPreviousSignalCallback(const Train *v, const void *)
{
// scan forwards from vehicle position, for the case that train is waiting at/approaching PBS signal
@@ -470,7 +470,7 @@ bool IsSafeWaitingPosition(const Train *v, TileIndex tile, Trackdir trackdir, bo
const TraceRestrictProgram *prog = GetExistingTraceRestrictProgram(ft.m_new_tile, TrackdirToTrack(td));
if (prog && prog->actions_used_flags & TRPAUF_RESERVE_THROUGH) {
TraceRestrictProgramResult out;
prog->Execute(v, TraceRestrictProgramInput(tile, trackdir, &IsSafeWaitingPositionTraceRestrictPreviousSignalCallback, NULL), out);
prog->Execute(v, TraceRestrictProgramInput(tile, trackdir, &VehiclePosTraceRestrictPreviousSignalCallback, NULL), out);
if (out.flags & TRPRF_RESERVE_THROUGH) {
return false;
}