(svn r11273) [NoAI] -Add: added AIOrder::MoveOrder (dynaxo) noai
authortruelight
Tue, 16 Oct 2007 16:07:01 +0000
branchnoai
changeset 9707 a5f233287295
parent 9706 8d8f719a4e69
child 9708 a63a756fd080
(svn r11273) [NoAI] -Add: added AIOrder::MoveOrder (dynaxo)
src/ai/api/ai_order.cpp
src/ai/api/ai_order.hpp
src/ai/api/ai_order.hpp.sq
--- a/src/ai/api/ai_order.cpp	Fri Oct 12 22:04:41 2007 +0000
+++ b/src/ai/api/ai_order.cpp	Tue Oct 16 16:07:01 2007 +0000
@@ -136,6 +136,14 @@
 	}
 }
 
+bool AIOrder::MoveOrder(VehicleID vehicle_id, uint32 order_id_move, uint32 order_id_target)
+{
+	if (!IsValidVehicleOrder(vehicle_id, order_id_move) || !IsValidVehicleOrder(vehicle_id, order_id_target))
+		return false;
+
+	return this->DoCommand(0, vehicle_id, order_id_move | (order_id_target << 16), CMD_MOVE_ORDER);
+}
+
 bool AIOrder::CopyOrders(VehicleID vehicle_id, VehicleID main_vehicle_id)
 {
 	if (!AIVehicle::IsValidVehicle(vehicle_id) || !AIVehicle::IsValidVehicle(main_vehicle_id)) return false;
--- a/src/ai/api/ai_order.hpp	Fri Oct 12 22:04:41 2007 +0000
+++ b/src/ai/api/ai_order.hpp	Tue Oct 16 16:07:01 2007 +0000
@@ -129,6 +129,21 @@
 	bool ChangeOrder(VehicleID vehicle_id, uint32 order_id, AIOrderFlags order_flags);
 
 	/**
+	 * Move an order inside the orderlist
+	 * @param vehicle_id  the vehicle to move the orders.
+	 * @param order_id_move    the order to move.
+	 * @param order_id_target  the target order
+	 * @pre IsValidVehicleOrder(vehicle_id, order_id_move).
+	 * @pre IsValidVehicleOrder(vehicle_id, order_id_target).
+	 * @return true if and only if the order was moved.
+	 * @note If the order is moved to a lower place (e.g. from 7 to 2)
+	 *  the target order is moved upwards (e.g. 3). If the order is moved
+	 *  to a higher place (e.g. from 7 to 9) the target will be moved
+	 *  downwards (e.g. 8).
+	 */
+	bool MoveOrder(VehicleID vehicle_id, uint32 order_id_move, uint32 order_id_target);
+
+	/**
 	 * Copies the orders from another vehicle. The orders of the main
 	 * vehicle are going to be the orders of the changed vehicle.
 	 * @param vehicle_id      the vehicle to copy the orders to.
--- a/src/ai/api/ai_order.hpp.sq	Fri Oct 12 22:04:41 2007 +0000
+++ b/src/ai/api/ai_order.hpp.sq	Tue Oct 16 16:07:01 2007 +0000
@@ -37,6 +37,7 @@
 	SQAIOrder.DefSQMethod(engine, &AIOrder::InsertOrder,         "InsertOrder",         5, "xiiii");
 	SQAIOrder.DefSQMethod(engine, &AIOrder::RemoveOrder,         "RemoveOrder",         3, "xii");
 	SQAIOrder.DefSQMethod(engine, &AIOrder::ChangeOrder,         "ChangeOrder",         4, "xiii");
+	SQAIOrder.DefSQMethod(engine, &AIOrder::MoveOrder,           "MoveOrder",           4, "xiii");
 	SQAIOrder.DefSQMethod(engine, &AIOrder::CopyOrders,          "CopyOrders",          3, "xii");
 	SQAIOrder.DefSQMethod(engine, &AIOrder::ShareOrders,         "ShareOrders",         3, "xii");
 	SQAIOrder.DefSQMethod(engine, &AIOrder::UnshareOrders,       "UnshareOrders",       2, "xi");