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 () | |
And destroy it ("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 rebuild 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 | The actual instantation of this cargo list |
Definition at line 191 of file cargopacket.h.
enum CargoList::MoveToAction |
Kind of actions that could be done with packets on move.
Definition at line 201 of file cargopacket.h.
void CargoList< Tinst >::AddToCache | ( | const CargoPacket * | cp | ) | [inline, protected] |
Update the cache to reflect adding of this packet.
Increases count and days_in_transit
cp | a new packet to be inserted |
Reimplemented in VehicleCargoList.
Definition at line 109 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 | ) | [inline] |
Appends the given cargo packet.
cp | the cargo packet to add |
Definition at line 116 of file cargopacket.cpp.
References CargoList< Tinst >::AddToCache(), CargoPacket::count, CargoPacket::feeder_share, CargoPacket::MAX_COUNT, and CargoList< Tinst >::packets.
Referenced by Load_VEHS().
FORCEINLINE uint CargoList< Tinst >::Count | ( | ) | const [inline] |
Returns the number of cargo entities in this list.
Definition at line 256 of file cargopacket.h.
Referenced by 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 274 of file cargopacket.h.
FORCEINLINE bool CargoList< Tinst >::Empty | ( | ) | const [inline] |
Checks whether this list is empty.
Definition at line 247 of file cargopacket.h.
Referenced by DrawRoadVehDetails(), DrawShipDetails(), StationViewWindow::DrawWaitingCargo(), CompanyStationsWindow::DrawWidget(), LoadUnloadVehicle(), StationViewWindow::OrderWaitingCargo(), PrepareUnload(), and CargoList< VehicleCargoList >::Source().
bool CargoList< Tinst >::MoveTo | ( | Tother_inst * | dest, | |
uint | count, | |||
MoveToAction | mta, | |||
CargoPayment * | payment, | |||
uint | data = 0 | |||
) | [inline] |
Moves the given amount of cargo to another list.
Depending on the value of mta the side effects of this function differ:
dest | the destination to move the cargo to | |
count | the 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 166 of file cargopacket.cpp.
References CargoPacket::count, CargoPacket::days_in_transit, 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, CargoPacket::source_id, CargoPacket::source_type, and CargoPacket::source_xy.
Referenced by LoadUnloadVehicle().
Returns a pointer to the cargo packet list (so you can iterate over it etc).
Definition at line 238 of file cargopacket.h.
Referenced by StationViewWindow::OrderWaitingCargo().
void CargoList< Tinst >::RemoveFromCache | ( | const CargoPacket * | cp | ) | [inline, 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 102 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 265 of file cargopacket.h.
Referenced by DrawRoadVehDetails(), DrawShipDetails(), and GetCargoSummaryOfArticulatedVehicle().
void CargoList< Tinst >::Truncate | ( | uint | max_remaining | ) | [inline] |
Truncates the cargo in this list to the given amount.
It leaves the first count cargo entities and removes the rest.
max_remaining | the maximum amount of entities to be in the list after the command |
Definition at line 138 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().