From 3b0e3d8d3033265f6225d86df7be3189782868f6 Mon Sep 17 00:00:00 2001 From: rubidium Date: Sat, 5 Apr 2008 23:36:54 +0000 Subject: (svn r12584) -Codechange: do not access the order type directly. --- src/order_base.h | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) (limited to 'src/order_base.h') diff --git a/src/order_base.h b/src/order_base.h index 267da1321..ada3aad37 100644 --- 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 @@ DECLARE_OLD_POOL(Order, Order, 6, 1000) * - REF_ORDER (all REFs are currently limited to 16 bits!!) */ struct Order : PoolItem { - Order *next; ///< Pointer to next order. If NULL, end of list +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 + uint8 flags; DestinationID dest; ///< The destionation of the order. @@ -37,15 +50,63 @@ struct Order : PoolItem { /** * 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! -- cgit v1.2.3-54-g00ecf