From fc5445d2088bd81d218f8eec751e8aafbeb1801e Mon Sep 17 00:00:00 2001 From: J0anJosep Date: Sun, 27 Dec 2020 22:29:23 +0100 Subject: [PATCH] Add: Check length of platforms for servicing trains. --- src/lang/english.txt | 1 + src/train_cmd.cpp | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/src/lang/english.txt b/src/lang/english.txt index 8df4c00602..ec5ff911ae 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -911,6 +911,7 @@ STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE STR_NEWS_VEHICLE_UNPROFITABLE_YEAR :{WHITE}{VEHICLE}'s profit last year was {CURRENCY_LONG} STR_NEWS_VEHICLE_UNPROFITABLE_PERIOD :{WHITE}{VEHICLE}'s profit last period was {CURRENCY_LONG} STR_NEWS_VEHICLE_CAN_T_FIND_FREE_DEPOT :{WHITE}{VEHICLE} can't find a free depot +STR_NEWS_VEHICLE_TOO_LONG_FOR_SERVICING :{WHITE}{VEHICLE} couldn't service in short platform STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} can't get to the next destination because it is out of range STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} stopped because an ordered refit failed diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 66ef11c055..e89f98c0c3 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -2418,6 +2418,14 @@ bool HandleTrainEnterDepot(Train *v) if (IsExtendedRailDepot(v->tile)) { v->cur_speed = 0; Train *t = Train::From(v); + for (Train *u = t; u != nullptr; u = u->Next()) { + if (!IsCompatibleTrainDepotTile(u->tile, t->tile)) { + SetDParam(0, v->index); + AddVehicleAdviceNewsItem(STR_NEWS_VEHICLE_TOO_LONG_FOR_SERVICING, v->index); + return false; + } + } + for (Train *u = t; u != nullptr; u = u->Next()) u->track |= TRACK_BIT_DEPOT; t->force_proceed = TFP_NONE; ClrBit(t->flags, VRF_TOGGLE_REVERSE);