diff src/order_base.h @ 8836:890a77315801 draft

(svn r12584) -Codechange: do not access the order type directly.
author rubidium <rubidium@openttd.org>
date Sat, 05 Apr 2008 23:36:54 +0000
parents e8296a8dbe93
children db9c6b0c9f07
line wrap: on
line diff
--- a/src/order_base.h
+++ b/src/order_base.h
@@ -9,8 +9,10 @@
 #include "oldpool.h"
 #include "core/bitmath_func.hpp"
 #include "cargo_type.h"
+#include "depot_type.h"
 #include "station_type.h"
 #include "vehicle_type.h"
+#include "waypoint_type.h"
 
 DECLARE_OLD_POOL(Order, Order, 6, 1000)
 
@@ -20,9 +22,20 @@
  * - REF_ORDER (all REFs are currently limited to 16 bits!!)
  */
 struct Order : PoolItem<Order, OrderID, &_Order_pool> {
+private:
+	friend const struct SaveLoad *GetVehicleDescription(VehicleType vt); ///< Saving and loading the current order of vehicles.
+	friend void Load_VEHS();                                             ///< Loading of ancient vehicles.
+	friend const struct SaveLoad *GetOrderDescription();                 ///< Saving and loading of orders.
+	friend uint32 PackOrder(const Order *order);                         ///< 'Compressing' an order.
+	friend Order UnpackOrder(uint32 packed);                             ///< 'Uncompressing' an order.
+	friend Order UnpackOldOrder(uint16 packed);                          ///< 'Uncompressing' a loaded old order.
+	friend Order UnpackVersion4Order(uint16 packed);                     ///< 'Uncompressing' a loaded ancient order.
+
+	OrderTypeByte type;
+
+public:
 	Order *next;          ///< Pointer to next order. If NULL, end of list
 
-	OrderTypeByte type;
 	uint8  flags;
 	DestinationID dest;   ///< The destionation of the order.
 
@@ -37,16 +50,64 @@
 
 	/**
 	 * Check if a Order really exists.
+	 * @return true if the order is valid.
 	 */
 	inline bool IsValid() const { return this->type != OT_NOTHING; }
 
 	/**
+	 * Check whether this order is of the given type.
+	 * @param type the type to check against.
+	 * @return true if the order matches.
+	 */
+	inline bool IsType(OrderType type) const { return this->type == type; }
+
+	/**
+	 * Get the type of order of this order.
+	 * @return the order type.
+	 */
+	inline OrderType GetType() const { return this->type; }
+
+	/**
 	 * 'Free' the order
 	 * @note ONLY use on "current_order" vehicle orders!
 	 */
 	void Free();
 
 	/**
+	 * Makes this order a Go To Station order.
+	 * @param destsination the station to go to.
+	 */
+	void MakeGoToStation(StationID destination);
+
+	/**
+	 * Makes this order a Go To Depot order.
+	 * @param destination the depot to go to.
+	 * @param order       is this order a 'default' order, or an overriden vehicle order?
+	 */
+	void MakeGoToDepot(DepotID destination, bool order);
+
+	/**
+	 * Makes this order a Go To Waypoint order.
+	 * @param destination the waypoint to go to.
+	 */
+	void MakeGoToWaypoint(WaypointID destination);
+
+	/**
+	 * Makes this order a Loading order.
+	 */
+	void MakeLoading();
+
+	/**
+	 * Makes this order a Leave Station order.
+	 */
+	void MakeLeaveStation();
+
+	/**
+	 * Makes this order a Dummy order.
+	 */
+	void MakeDummy();
+
+	/**
 	 * Free a complete order chain.
 	 * @note do not use on "current_order" vehicle orders!
 	 */