diff --git a/src/cargopacket.h b/src/cargopacket.h --- a/src/cargopacket.h +++ b/src/cargopacket.h @@ -29,7 +29,6 @@ struct CargoPacket : CargoPacketPool::Po uint16 count; ///< The amount of cargo in this packet byte days_in_transit; ///< Amount of days this packet has been in transit - bool paid_for; ///< Have we been paid for this cargo packet? /** * Creates a new cargo packet @@ -50,7 +49,7 @@ struct CargoPacket : CargoPacketPool::Po */ FORCEINLINE bool SameSource(const CargoPacket *cp) const { - return this->source_xy == cp->source_xy && this->days_in_transit == cp->days_in_transit && this->paid_for == cp->paid_for; + return this->source_xy == cp->source_xy && this->days_in_transit == cp->days_in_transit; } }; @@ -81,7 +80,8 @@ public: enum MoveToAction { MTA_FINAL_DELIVERY, ///< "Deliver" the packet to the final destination, i.e. destroy the packet MTA_CARGO_LOAD, ///< Load the packet onto a vehicle, i.e. set the last loaded station ID - MTA_OTHER ///< "Just" move the packet to another cargo list + MTA_TRANSFER, ///< The cargo is moved as part of a transfer + MTA_UNLOAD, ///< The cargo is moved as part of a forced unload }; private: @@ -89,7 +89,6 @@ private: bool empty; ///< Cache for whether this list is empty or not uint count; ///< Cache for the number of cargo entities - bool unpaid_cargo; ///< Cache for the unpaid cargo Money feeder_share; ///< Cache for the feeder share StationID source; ///< Cache for the source of the packet uint days_in_transit; ///< Cache for the number of days in transit @@ -126,12 +125,6 @@ public: FORCEINLINE uint Count() const { return this->count; } /** - * Is there some cargo that has not been paid for? - * @return true if and only if there is such a cargo - */ - FORCEINLINE bool UnpaidCargo() const { return this->unpaid_cargo; } - - /** * Returns total sum of the feeder share for all packets * @return the before mentioned number */ @@ -171,18 +164,23 @@ public: * Depending on the value of mta the side effects of this function differ: * - MTA_FINAL_DELIVERY: destroys the packets that do not originate from a specific station * - MTA_CARGO_LOAD: sets the loaded_at_xy value of the moved packets - * - MTA_OTHER: just move without side effects + * - MTA_TRANSFER: just move without side effects + * - MTA_UNLOAD: just move without side effects * @param dest the destination to move the cargo to * @param count the amount of cargo entities to move * @param mta how to handle the moving (side effects) * @param data Depending on mta the data of this variable differs: * - MTA_FINAL_DELIVERY - station ID of packet's origin not to remove * - MTA_CARGO_LOAD - station's tile index of load - * - MTA_OTHER - unused - * @param mta == MTA_FINAL_DELIVERY || dest != NULL + * - MTA_TRANSFER - unused + * - MTA_UNLOAD - unused + * @param payment The payment helper + * + * @pre mta == MTA_FINAL_DELIVERY || dest != NULL + * @pre mta == MTA_UNLOAD || mta == MTA_CARGO_LOAD || payment != NULL * @return true if there are still packets that might be moved from this cargo list */ - bool MoveTo(CargoList *dest, uint count, CargoList::MoveToAction mta = MTA_OTHER, uint data = 0); + bool MoveTo(CargoList *dest, uint count, CargoList::MoveToAction mta, CargoPayment *payment, uint data = 0); /** Invalidates the cached data and rebuild it */ void InvalidateCache();