summaryrefslogtreecommitdiff
path: root/src/order_cmd.cpp
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2011-08-30 20:21:01 +0000
committerfrosch <frosch@openttd.org>2011-08-30 20:21:01 +0000
commit4e5d841d666cf7e1f06918d008c2b4b723196f41 (patch)
tree238cc8a239996edee4fd52bed7f95574be6bffdc /src/order_cmd.cpp
parentc9982cfbd41c04207e3cea04e4d969305f995a0c (diff)
downloadopenttd-4e5d841d666cf7e1f06918d008c2b4b723196f41.tar.xz
(svn r22858) -Feature: Conditional order depending on remaining lifetime of a vehicle. (monoid)
Diffstat (limited to 'src/order_cmd.cpp')
-rw-r--r--src/order_cmd.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp
index 9a9046005..5f69fcd14 100644
--- a/src/order_cmd.cpp
+++ b/src/order_cmd.cpp
@@ -1799,12 +1799,13 @@ VehicleOrderID ProcessConditionalOrder(const Order *order, const Vehicle *v)
uint16 value = order->GetConditionValue();
switch (order->GetConditionVariable()) {
- case OCV_LOAD_PERCENTAGE: skip_order = OrderConditionCompare(occ, CalcPercentVehicleFilled(v, NULL), value); break;
- case OCV_RELIABILITY: skip_order = OrderConditionCompare(occ, ToPercent16(v->reliability), value); break;
- case OCV_MAX_SPEED: skip_order = OrderConditionCompare(occ, v->GetDisplayMaxSpeed() * 10 / 16, value); break;
- case OCV_AGE: skip_order = OrderConditionCompare(occ, v->age / DAYS_IN_LEAP_YEAR, value); break;
- case OCV_REQUIRES_SERVICE: skip_order = OrderConditionCompare(occ, v->NeedsServicing(), value); break;
- case OCV_UNCONDITIONALLY: skip_order = true; break;
+ case OCV_LOAD_PERCENTAGE: skip_order = OrderConditionCompare(occ, CalcPercentVehicleFilled(v, NULL), value); break;
+ case OCV_RELIABILITY: skip_order = OrderConditionCompare(occ, ToPercent16(v->reliability), value); break;
+ case OCV_MAX_SPEED: skip_order = OrderConditionCompare(occ, v->GetDisplayMaxSpeed() * 10 / 16, value); break;
+ case OCV_AGE: skip_order = OrderConditionCompare(occ, v->age / DAYS_IN_LEAP_YEAR, value); break;
+ case OCV_REQUIRES_SERVICE: skip_order = OrderConditionCompare(occ, v->NeedsServicing(), value); break;
+ case OCV_UNCONDITIONALLY: skip_order = true; break;
+ case OCV_REMAINING_LIFETIME: skip_order = OrderConditionCompare(occ, max(v->max_age - v->age + DAYS_IN_LEAP_YEAR - 1, 0) / DAYS_IN_LEAP_YEAR, value); break;
default: NOT_REACHED();
}