mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-08-18 03:59:09 +00:00
(svn r785) -Fix: A train can leave and enter the same depot at the same time, then the trai simply got stuck
This commit is contained in:
15
train_cmd.c
15
train_cmd.c
@@ -1261,18 +1261,11 @@ static void TrainPlayLeaveStationSound(Vehicle *v)
|
||||
static bool CheckTrainStayInDepot(Vehicle *v)
|
||||
{
|
||||
Vehicle *u;
|
||||
if (v->u.rail.track != 0x80) // first wagon (eg engine) in depot
|
||||
return false;
|
||||
|
||||
// make sure that all vehicles are in the depot
|
||||
u = GetLastVehicleInChain(v);
|
||||
if (u->u.rail.track != 0x80)
|
||||
return false;
|
||||
|
||||
// fix hung train if both ends are in depots (when here first wagon and last wagon is in depot)
|
||||
// both first and last should be in the same depot, eg on the same tile
|
||||
if (v->tile != u->tile)
|
||||
return false;
|
||||
// bail out if not all wagons are in the same depot or not in a depot at all
|
||||
for (u = v; u != NULL; u = u->next)
|
||||
if (u->u.rail.track != 0x80 || u->tile != v->tile)
|
||||
return false;
|
||||
|
||||
if (v->u.rail.force_proceed == 0) {
|
||||
if (++v->load_unload_time_rem < 37)
|
||||
|
Reference in New Issue
Block a user