mirror of https://github.com/OpenTTD/OpenTTD.git
(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:
parent
c5b0ecac4f
commit
0b3cceb21d
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)
|
||||
|
|
Loading…
Reference in New Issue