diff src/order_cmd.cpp @ 8903:d15e125c0b6a draft

(svn r12670) -Add: unconditional/always order 'jump/skip' variable.
author rubidium <rubidium@openttd.org>
date Sat, 12 Apr 2008 13:07:25 +0000 (2008-04-12)
parents f30afabf2b45
children 325d130fab50
line wrap: on
line diff
--- a/src/order_cmd.cpp
+++ b/src/order_cmd.cpp
@@ -896,6 +896,8 @@
 		case MOF_COND_COMPARATOR:
 			if (data >= OCC_END) return CMD_ERROR;
 			switch (order->GetConditionVariable()) {
+				case OCV_UNCONDITIONALLY: return CMD_ERROR;
+
 				case OCV_REQUIRES_SERVICE:
 					if (data != OCC_IS_TRUE && data != OCC_IS_FALSE) return CMD_ERROR;
 					break;
@@ -908,6 +910,8 @@
 
 		case MOF_COND_VALUE:
 			switch (order->GetConditionVariable()) {
+				case OCV_UNCONDITIONALLY: return CMD_ERROR;
+
 				case OCV_LOAD_PERCENTAGE:
 				case OCV_RELIABILITY:
 					if (data > 100) return CMD_ERROR;
@@ -950,6 +954,11 @@
 
 				OrderConditionComparator occ = order->GetConditionComparator();
 				switch (order->GetConditionVariable()) {
+					case OCV_UNCONDITIONALLY:
+						order->SetConditionComparator(OCC_EQUALS);
+						order->SetConditionValue(0);
+						break;
+
 					case OCV_REQUIRES_SERVICE:
 						if (occ != OCC_IS_TRUE && occ != OCC_IS_FALSE) order->SetConditionComparator(OCC_IS_TRUE);
 						break;
@@ -1706,6 +1715,7 @@
 				case OCV_MAX_SPEED:        skip_order = OrderConditionCompare(occ, v->GetDisplayMaxSpeed(),           value); break;
 				case OCV_AGE:              skip_order = OrderConditionCompare(occ, v->age / 366,                      value); break;
 				case OCV_REQUIRES_SERVICE: skip_order = OrderConditionCompare(occ, v->NeedsServicing(),               value); break;
+				case OCV_UNCONDITIONALLY:  skip_order = true; break;
 				default: NOT_REACHED();
 			}
 			UpdateVehicleTimetable(v, true);