mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-04 13:23:46 +00:00
(svn r10381) -Fix [FS#951]: skipping an order made train reverse immediatelly. Patch by boekabart.
This commit is contained in:
parent
b3c3171c1e
commit
3a82c1e9ea
@ -2392,12 +2392,19 @@ static bool ProcessTrainOrder(Vehicle *v)
|
||||
default: break;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reversing because of order change is allowed only just after leaving a
|
||||
* station (and the difficulty setting to allowed, of course)
|
||||
* this can be detected because only after OT_LEAVESTATION, current_order
|
||||
* will be reset to nothing. (That also happens if no order, but in that case
|
||||
* it won't hit the point in code where may_reverse is checked)
|
||||
*/
|
||||
bool may_reverse = v->current_order.type == OT_NOTHING;
|
||||
|
||||
/* check if we've reached the waypoint? */
|
||||
bool at_waypoint = false;
|
||||
if (v->current_order.type == OT_GOTO_WAYPOINT && v->tile == v->dest_tile) {
|
||||
UpdateVehicleTimetable(v, true);
|
||||
v->cur_order_index++;
|
||||
at_waypoint = true;
|
||||
}
|
||||
|
||||
/* check if we've reached a non-stop station while TTDPatch nonstop is enabled.. */
|
||||
@ -2453,7 +2460,7 @@ static bool ProcessTrainOrder(Vehicle *v)
|
||||
return false;
|
||||
}
|
||||
|
||||
return !at_waypoint && CheckReverseTrain(v);
|
||||
return may_reverse && CheckReverseTrain(v);
|
||||
}
|
||||
|
||||
void Train::MarkDirty()
|
||||
|
Loading…
Reference in New Issue
Block a user