summaryrefslogtreecommitdiff
path: root/src/order_backup.cpp
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2011-01-31 20:44:15 +0000
committerfrosch <frosch@openttd.org>2011-01-31 20:44:15 +0000
commita97d52a29a990132a8a5e4dd60304483617cec50 (patch)
tree0d8d42d633feabb438f812cedf0534a3c665074e /src/order_backup.cpp
parent67a5cd0b185158ca4926c8cb45f1735a1001e00b (diff)
downloadopenttd-a97d52a29a990132a8a5e4dd60304483617cec50.tar.xz
(svn r21933) -Codechange: Split cur_order_index into cur_auto_order_index and cur_real_order_index to keep track of the current real order in an unambiguous way.
-Fix [FS#4440]: Automatic orders behave now stable wrt. service orders and are not added or removed depending on the need of servicing. -Fix: Various other issues with automatic orders, e.g. vehicles getting stuck with "no orders" when there are automatic orders at the end of the order list.
Diffstat (limited to 'src/order_backup.cpp')
-rw-r--r--src/order_backup.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/order_backup.cpp b/src/order_backup.cpp
index 39f9c5d36..78091d97b 100644
--- a/src/order_backup.cpp
+++ b/src/order_backup.cpp
@@ -44,7 +44,7 @@ OrderBackup::OrderBackup(const Vehicle *v, uint32 user)
{
this->user = user;
this->tile = v->tile;
- this->orderindex = v->cur_order_index;
+ this->orderindex = v->cur_auto_order_index;
this->group = v->group_id;
this->service_interval = v->service_interval;
@@ -87,7 +87,10 @@ void OrderBackup::DoRestore(Vehicle *v)
}
uint num_orders = v->GetNumOrders();
- if (num_orders != 0) v->cur_order_index = this->orderindex % num_orders;
+ if (num_orders != 0) {
+ v->cur_real_order_index = v->cur_auto_order_index = this->orderindex % num_orders;
+ v->UpdateRealOrderIndex();
+ }
v->service_interval = this->service_interval;
/* Restore vehicle group */