diff --git a/src/order_base.h b/src/order_base.h --- a/src/order_base.h +++ b/src/order_base.h @@ -168,6 +168,9 @@ public: inline void SetConditionValue(uint16 value) { SB(this->dest, 0, 11, value); } bool ShouldStopAtStation(const Vehicle *v, StationID station) const; + bool CanLoadOrUnload() const; + bool CanLeaveWithCargo(bool has_cargo) const; + TileIndex GetLocation(const Vehicle *v, bool airport = false) const; /** Checks if this order has travel_time and if needed wait_time set. */ @@ -239,6 +242,14 @@ public: inline Order *GetLastOrder() const { return this->GetOrderAt(this->num_orders - 1); } /** + * Get the order after the given one or the first one, if the given one is the + * last one. + * @param curr Order to find the next one for. + * @return Next order. + */ + inline const Order *GetNext(const Order *curr) const { return (curr->next == NULL) ? this->GetFirstOrder() : curr->next; } + + /** * Get number of orders in the order list. * @return number of orders in the chain. */ @@ -250,6 +261,9 @@ public: */ inline VehicleOrderID GetNumManualOrders() const { return this->num_manual_orders; } + StationID GetNextStoppingStation(const Vehicle *v) const; + const Order *GetNextStoppingOrder(const Vehicle *v, const Order *next, uint hops) const; + void InsertOrderAt(Order *new_order, int index); void DeleteOrderAt(int index); void MoveOrder(int from, int to);