Simple collection class for a list of cargo packets. More...
#include <cargopacket.h>
Public Types | |
| enum | MoveToAction { MTA_FINAL_DELIVERY, MTA_CARGO_LOAD, MTA_TRANSFER, MTA_UNLOAD } |
Kind of actions that could be done with packets on move. More... | |
| typedef std::list< CargoPacket * > | List |
| Container with cargo packets. | |
| typedef List::iterator | Iterator |
| The iterator for our container. | |
| typedef List::const_iterator | ConstIterator |
| The const iterator for our container. | |
Public Member Functions | |
| CargoList () | |
| Create the cargo list. | |
| ~CargoList () | |
| Destroy the cargolist ("frees" all cargo packets). | |
| FORCEINLINE const List * | Packets () const |
| Returns a pointer to the cargo packet list (so you can iterate over it etc). | |
| FORCEINLINE bool | Empty () const |
| Checks whether this list is empty. | |
| FORCEINLINE uint | Count () const |
| Returns the number of cargo entities in this list. | |
| FORCEINLINE StationID | Source () const |
| Returns source of the first cargo packet in this list. | |
| FORCEINLINE uint | DaysInTransit () const |
| Returns average number of days in transit for a cargo entity. | |
| void | Append (CargoPacket *cp) |
| Appends the given cargo packet. | |
| void | Truncate (uint max_remaining) |
| Truncates the cargo in this list to the given amount. | |
| template<class Tother_inst > | |
| bool | MoveTo (Tother_inst *dest, uint count, MoveToAction mta, CargoPayment *payment, uint data=0) |
| Moves the given amount of cargo to another list. | |
| void | InvalidateCache () |
| Invalidates the cached data and rebuilds it. | |
Protected Member Functions | |
| void | AddToCache (const CargoPacket *cp) |
| Update the cache to reflect adding of this packet. | |
| void | RemoveFromCache (const CargoPacket *cp) |
| Update the cached values to reflect the removal of this packet. | |
Protected Attributes | |
| uint | count |
| Cache for the number of cargo entities. | |
| uint | cargo_days_in_transit |
| Cache for the sum of number of days in transit of each entity; comparable to man-hours. | |
| List | packets |
| The cargo packets in this list. | |
Simple collection class for a list of cargo packets.
| Tinst | Actual instantation of this cargo list. |
Definition at line 167 of file cargopacket.h.
| typedef List::const_iterator CargoList< Tinst >::ConstIterator |
The const iterator for our container.
Definition at line 174 of file cargopacket.h.
The iterator for our container.
Definition at line 172 of file cargopacket.h.
| typedef std::list<CargoPacket *> CargoList< Tinst >::List |
Container with cargo packets.
Definition at line 170 of file cargopacket.h.
| enum CargoList::MoveToAction |
Kind of actions that could be done with packets on move.
Definition at line 177 of file cargopacket.h.
Create the cargo list.
Definition at line 196 of file cargopacket.h.
| void CargoList< Tinst >::AddToCache | ( | const CargoPacket * | cp | ) | [protected] |
Update the cache to reflect adding of this packet.
Increases count and days_in_transit.
| cp | New packet to be inserted. |
Reimplemented in VehicleCargoList.
Definition at line 175 of file cargopacket.cpp.
References CargoList< Tinst >::cargo_days_in_transit, CargoPacket::count, CargoList< Tinst >::count, and CargoPacket::days_in_transit.
Referenced by CargoList< Tinst >::Append(), and CargoList< Tinst >::InvalidateCache().
| void CargoList< Tinst >::Append | ( | CargoPacket * | cp | ) |
Appends the given cargo packet.
Tries to merge it with another one in the packets list. If no fitting packet is found, appends it.
| cp | Cargo packet to add. |
Definition at line 190 of file cargopacket.cpp.
References CargoList< Tinst >::AddToCache(), CargoPacket::count, CargoPacket::MAX_COUNT, CargoPacket::Merge(), and CargoList< Tinst >::packets.
Referenced by Load_VEHS(), and LoadOldVehicle().
| FORCEINLINE uint CargoList< Tinst >::Count | ( | ) | const [inline] |
Returns the number of cargo entities in this list.
Definition at line 222 of file cargopacket.h.
Referenced by AfterLoadGame(), CalcPercentVehicleFilled(), DrawRoadVehDetails(), DrawShipDetails(), CompanyStationsWindow::DrawWidget(), GetCargoSummaryOfArticulatedVehicle(), Train::GetImage(), RoadVehicle::GetImage(), Train::GetWeight(), RoadVehicle::GetWeight(), LoadUnloadStation(), LoadUnloadVehicle(), StationViewWindow::OrderWaitingCargo(), and TransferCargo().
| FORCEINLINE uint CargoList< Tinst >::DaysInTransit | ( | ) | const [inline] |
Returns average number of days in transit for a cargo entity.
Definition at line 240 of file cargopacket.h.
| FORCEINLINE bool CargoList< Tinst >::Empty | ( | ) | const [inline] |
Checks whether this list is empty.
Definition at line 213 of file cargopacket.h.
Referenced by DrawRoadVehDetails(), DrawShipDetails(), StationViewWindow::DrawWaitingCargo(), CompanyStationsWindow::DrawWidget(), LoadUnloadVehicle(), StationViewWindow::OrderWaitingCargo(), PrepareUnload(), and CargoList< VehicleCargoList >::Source().
| void CargoList< Tinst >::InvalidateCache | ( | ) |
Invalidates the cached data and rebuilds it.
Reimplemented in VehicleCargoList.
Definition at line 343 of file cargopacket.cpp.
References CargoList< Tinst >::AddToCache(), CargoList< Tinst >::cargo_days_in_transit, CargoList< Tinst >::count, and CargoList< Tinst >::packets.
Referenced by CheckCaches().
| bool CargoList< Tinst >::MoveTo | ( | Tother_inst * | dest, | |
| uint | max_move, | |||
| MoveToAction | mta, | |||
| CargoPayment * | payment, | |||
| uint | data = 0 | |||
| ) |
Moves the given amount of cargo to another list.
Depending on the value of mta the side effects of this function differ:
| dest | Destination to move the cargo to. | |
| count | Amount of cargo entities to move. | |
| mta | How to handle the moving (side effects). | |
| data | Depending on mta the data of this variable differs:
| |
| payment | The payment helper. |
Definition at line 262 of file cargopacket.cpp.
References CargoPacket::count, CargoPacket::feeder_share, CargoPacket::loaded_at_xy, CargoList< Tinst >::MTA_CARGO_LOAD, CargoList< Tinst >::MTA_FINAL_DELIVERY, CargoList< Tinst >::MTA_TRANSFER, CargoList< Tinst >::MTA_UNLOAD, CargoList< Tinst >::packets, CargoPayment::PayFinalDelivery(), CargoPayment::PayTransfer(), CargoList< Tinst >::RemoveFromCache(), CargoPacket::source, and CargoPacket::Split().
Referenced by LoadUnloadVehicle().
Returns a pointer to the cargo packet list (so you can iterate over it etc).
Definition at line 204 of file cargopacket.h.
Referenced by StationViewWindow::OrderWaitingCargo().
| void CargoList< Tinst >::RemoveFromCache | ( | const CargoPacket * | cp | ) | [protected] |
Update the cached values to reflect the removal of this packet.
Decreases count and days_in_transit.
| cp | Packet to be removed from cache. |
Reimplemented in VehicleCargoList.
Definition at line 163 of file cargopacket.cpp.
References CargoList< Tinst >::cargo_days_in_transit, CargoPacket::count, CargoList< Tinst >::count, and CargoPacket::days_in_transit.
Referenced by CargoList< Tinst >::MoveTo(), and CargoList< Tinst >::Truncate().
Returns source of the first cargo packet in this list.
Definition at line 231 of file cargopacket.h.
Referenced by DrawRoadVehDetails(), DrawShipDetails(), and GetCargoSummaryOfArticulatedVehicle().
| void CargoList< Tinst >::Truncate | ( | uint | max_remaining | ) |
Truncates the cargo in this list to the given amount.
It leaves the first count cargo entities and removes the rest.
| max_remaining | Maximum amount of entities to be in the list after the command. |
Definition at line 213 of file cargopacket.cpp.
References CargoList< Tinst >::cargo_days_in_transit, CargoList< Tinst >::count, CargoPacket::count, CargoPacket::days_in_transit, CargoList< Tinst >::packets, and CargoList< Tinst >::RemoveFromCache().
Referenced by CrashAirplane(), MaybeCrashAirplane(), Vehicle::PreDestructor(), RefitVehicle(), and Station::~Station().
1.7.1