summaryrefslogtreecommitdiff
path: root/src/ai/api/ai_order.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2010-08-06 19:04:21 +0000
committerrubidium <rubidium@openttd.org>2010-08-06 19:04:21 +0000
commit90a35d2e5b3728a8cd7fe1717d6c940b525cca9e (patch)
treec069c37fe0b72cad7b5c053f49ff13ea7213f702 /src/ai/api/ai_order.cpp
parentd54f2ba21f2711d3ce8fe9f19fd7ab6645107c5b (diff)
downloadopenttd-90a35d2e5b3728a8cd7fe1717d6c940b525cca9e.tar.xz
(svn r20389) [NoAI] -Add: AIOrder::IsVoidOrder to find void "(Invalid Order)" orders.
[NoAI] -Change: AIOrder::GetOrderFlags returns AIOrder::AIOF_INVALID for void orders.
Diffstat (limited to 'src/ai/api/ai_order.cpp')
-rw-r--r--src/ai/api/ai_order.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/ai/api/ai_order.cpp b/src/ai/api/ai_order.cpp
index bf55cc504..370cff4f6 100644
--- a/src/ai/api/ai_order.cpp
+++ b/src/ai/api/ai_order.cpp
@@ -99,6 +99,15 @@ static const Order *ResolveOrder(VehicleID vehicle_id, AIOrder::OrderPosition or
return order->GetType() == OT_CONDITIONAL;
}
+/* static */ bool AIOrder::IsVoidOrder(VehicleID vehicle_id, OrderPosition order_position)
+{
+ if (order_position == ORDER_CURRENT) return false;
+ if (!IsValidVehicleOrder(vehicle_id, order_position)) return false;
+
+ const Order *order = Vehicle::Get(vehicle_id)->GetOrder(order_position);
+ return order->GetType() == OT_DUMMY;
+}
+
/* static */ bool AIOrder::IsCurrentOrderPartOfOrderList(VehicleID vehicle_id)
{
if (AIVehicle::IsValidVehicle(vehicle_id)) return false;
@@ -224,7 +233,7 @@ static const Order *ResolveOrder(VehicleID vehicle_id, AIOrder::OrderPosition or
if (!IsValidVehicleOrder(vehicle_id, order_position)) return AIOF_INVALID;
const Order *order = ::ResolveOrder(vehicle_id, order_position);
- if (order == NULL || order->GetType() == OT_CONDITIONAL) return AIOF_INVALID;
+ if (order == NULL || order->GetType() == OT_CONDITIONAL || order->GetType() == OT_DUMMY) return AIOF_INVALID;
AIOrderFlags order_flags = AIOF_NONE;
order_flags |= (AIOrderFlags)order->GetNonStopType();