1
0
Fork 0

Fix: Prevent duplicate train reversal when already reversing

pull/14320/head
ArtiomGusev 2025-06-01 12:41:34 +03:00
parent e46456d605
commit 4c7ea26238
1 changed files with 5 additions and 1 deletions

View File

@ -1973,7 +1973,7 @@ static bool IsWholeTrainInsideDepot(const Train *v)
*/ */
void ReverseTrainDirection(Train *v) void ReverseTrainDirection(Train *v)
{ {
DEBUG(driver, 1, "Reversing train %d on tile %d", v->index, v->tile); //DEBUG(driver, 1, "Reversing train %d on tile %d", v->index, v->tile);
if (IsRailDepotTile(v->tile)) { if (IsRailDepotTile(v->tile)) {
if (IsWholeTrainInsideDepot(v)) return; if (IsWholeTrainInsideDepot(v)) return;
@ -3868,6 +3868,9 @@ static TileIndex TrainApproachingCrossingTile(const Train *v)
*/ */
static bool TrainCheckIfLineEnds(Train *v, bool reverse) static bool TrainCheckIfLineEnds(Train *v, bool reverse)
{ {
if (v->flags.Test(VehicleRailFlag::Reversing)) return false;
/* First, handle broken down train */ /* First, handle broken down train */
int t = v->breakdown_ctr; int t = v->breakdown_ctr;
@ -3917,6 +3920,7 @@ static bool TrainCheckIfLineEnds(Train *v, bool reverse)
} }
static bool TrainLocoHandler(Train *v, bool mode) static bool TrainLocoHandler(Train *v, bool mode)
{ {
/* train has crashed? */ /* train has crashed? */