OpenTTD
Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Attributes | Friends
CargoPacket Struct Reference

Container for cargo from the same location and time. More...

#include <cargopacket.h>

Inheritance diagram for CargoPacket:
Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_cargopacket_pool >

Public Member Functions

 CargoPacket ()
 Create a new packet for savegame loading.
 CargoPacket (StationID source, TileIndex source_xy, uint16 count, SourceType source_type, SourceID source_id)
 Creates a new cargo packet.
 CargoPacket (uint16 count, byte days_in_transit, StationID source, TileIndex source_xy, TileIndex loaded_at_xy, Money feeder_share=0, SourceType source_type=ST_INDUSTRY, SourceID source_id=INVALID_SOURCE)
 Creates a new cargo packet.
 ~CargoPacket ()
 Destroy the packet.
CargoPacketSplit (uint new_size)
 Split this packet in two and return the split off part.
void Merge (CargoPacket *cp)
 Merge another packet into this one.
void Reduce (uint count)
 Reduce the packet by the given amount and remove the feeder share.
void SetLoadPlace (TileIndex load_place)
 Sets the tile where the packet was loaded last.
void SetNextStation (StationID next_station)
 Sets the station where the packet is supposed to go next.
void AddFeederShare (Money new_share)
 Adds some feeder share to the packet.
uint16 Count () const
 Gets the number of 'items' in this packet.
Money FeederShare () const
 Gets the amount of money already paid to earlier vehicles in the feeder chain.
Money FeederShare (uint part) const
 Gets part of the amount of money already paid to earlier vehicles in the feeder chain.
byte DaysInTransit () const
 Gets the number of days this cargo has been in transit.
SourceType SourceSubsidyType () const
 Gets the type of the cargo's source.
SourceID SourceSubsidyID () const
 Gets the ID of the cargo's source.
StationID SourceStation () const
 Gets the ID of the station where the cargo was loaded for the first time.
TileIndex SourceStationXY () const
 Gets the coordinates of the cargo's source station.
TileIndex LoadedAtXY () const
 Gets the coordinates of the cargo's last loading station.
StationID NextStation () const
 Gets the ID of station the cargo wants to go next.
- Public Member Functions inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_cargopacket_pool >
void * operator new (size_t size)
 Allocates space for new Titem.
void * operator new (size_t size, size_t index)
 Allocates space for new Titem with given index.
void * operator new (size_t size, void *ptr)
 Allocates space for new Titem at given memory address.
void operator delete (void *p)
 Marks Titem as free.

Static Public Member Functions

static void InvalidateAllFrom (SourceType src_type, SourceID src)
 Invalidates (sets source_id to INVALID_SOURCE) all cargo packets from given source.
static void InvalidateAllFrom (StationID sid)
 Invalidates (sets source to INVALID_STATION) all cargo packets from given station.
static void AfterLoad ()
 Savegame conversion for cargopackets.
- Static Public Member Functions inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_cargopacket_pool >
static bool CanAllocateItem (size_t n=1)
 Helper functions so we can use PoolItem::Function() instead of _poolitem_pool.Function()
static bool CleaningPool ()
 Returns current state of pool cleaning - yes or no.
static bool IsValidID (size_t index)
 Tests whether given index can be used to get valid (non-NULL) Titem.
static Titem * Get (size_t index)
 Returns Titem with given index.
static Titem * GetIfValid (size_t index)
 Returns Titem with given index.
static size_t GetPoolSize ()
 Returns first unused index.
static size_t GetNumItems ()
 Returns number of valid items in the pool.
static void PostDestructor (size_t index)
 Dummy function called after destructor of each member.

Static Public Attributes

static const uint16 MAX_COUNT = UINT16_MAX
 Maximum number of items in a single cargo packet.

Private Attributes

Money feeder_share
 Value of feeder pickup to be paid for on delivery of cargo.
uint16 count
 The amount of cargo in this packet.
byte days_in_transit
 Amount of days this packet has been in transit.
SourceTypeByte source_type
 Type of source_id.
SourceID source_id
 Index of source, INVALID_SOURCE if unknown/invalid.
StationID source
 The station where the cargo came from first.
TileIndex source_xy
 The origin of the cargo (first station in feeder chain).
union {
   TileOrStationID   loaded_at_xy
 Location where this cargo has been loaded into the vehicle.
   TileOrStationID   next_station
 Station where the cargo wants to go next.
}; 

Friends

class CargoList
 The CargoList caches, thus needs to know about it.
class VehicleCargoList
class StationCargoList
struct SaveLoadGetCargoPacketDesc ()
 We want this to be saved, right?

Additional Inherited Members

- Data Fields inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_cargopacket_pool >
Tindex index
 Index of this pool item.

Detailed Description

Container for cargo from the same location and time.

Definition at line 44 of file cargopacket.h.

Constructor & Destructor Documentation

CargoPacket::CargoPacket ( StationID  source,
TileIndex  source_xy,
uint16  count,
SourceType  source_type,
SourceID  source_id 
)

Creates a new cargo packet.

Parameters
sourceSource station of the packet.
source_xySource location of the packet.
countNumber of cargo entities to put in this packet.
source_type'Type' of source the packet comes from (for subsidies).
source_idActual source of the packet (for subsidies).
Precondition
count != 0
Note
We have to zero memory ourselves here because we are using a 'new' that, in contrary to all other pools, does not memset to 0.

Definition at line 46 of file cargopacket.cpp.

References source_type.

CargoPacket::CargoPacket ( uint16  count,
byte  days_in_transit,
StationID  source,
TileIndex  source_xy,
TileIndex  loaded_at_xy,
Money  feeder_share = 0,
SourceType  source_type = ST_INDUSTRY,
SourceID  source_id = INVALID_SOURCE 
)

Creates a new cargo packet.

Initializes the fields that cannot be changed later. Used when loading or splitting packets.

Parameters
countNumber of cargo entities to put in this packet.
days_in_transitNumber of days the cargo has been in transit.
sourceStation the cargo was initially loaded.
source_xyStation location the cargo was initially loaded.
loaded_at_xyLocation the cargo was loaded last.
feeder_shareFeeder share the packet has already accumulated.
source_type'Type' of source the packet comes from (for subsidies).
source_idActual source of the packet (for subsidies).
Note
We have to zero memory ourselves here because we are using a 'new' that, in contrary to all other pools, does not memset to 0.

Definition at line 73 of file cargopacket.cpp.

References source_type.

CargoPacket::~CargoPacket ( )
inline

Destroy the packet.

Definition at line 73 of file cargopacket.h.

Member Function Documentation

void CargoPacket::AddFeederShare ( Money  new_share)
inline

Adds some feeder share to the packet.

Parameters
new_shareFeeder share to be added.

Definition at line 95 of file cargopacket.h.

References feeder_share.

Referenced by VehicleCargoList::Stage().

uint16 CargoPacket::Count ( ) const
inline
byte CargoPacket::DaysInTransit ( ) const
inline

Gets the number of days this cargo has been in transit.

This number isn't really in days, but in 2.5 days (CARGO_AGING_TICKS = 185 ticks) and it is capped at 255.

Returns
Length this cargo has been in transit.

Definition at line 133 of file cargopacket.h.

References days_in_transit.

Referenced by CargoPayment::PayFinalDelivery(), and CargoPayment::PayTransfer().

Money CargoPacket::FeederShare ( ) const
inline

Gets the amount of money already paid to earlier vehicles in the feeder chain.

Returns
Feeder share.

Definition at line 111 of file cargopacket.h.

References feeder_share.

Referenced by CargoPayment::PayFinalDelivery(), Reduce(), VehicleCargoList::RemoveFromCache(), and Split().

Money CargoPacket::FeederShare ( uint  part) const
inline

Gets part of the amount of money already paid to earlier vehicles in the feeder chain.

Parameters
partAmount of cargo to get the share for.
Returns
Feeder share for the given amount of cargo.

Definition at line 122 of file cargopacket.h.

References count, and feeder_share.

void CargoPacket::InvalidateAllFrom ( SourceType  src_type,
SourceID  src 
)
static

Invalidates (sets source_id to INVALID_SOURCE) all cargo packets from given source.

Parameters
src_typeType of source.
srcIndex of source.

Definition at line 129 of file cargopacket.cpp.

References FOR_ALL_CARGOPACKETS, INVALID_SOURCE, source_id, and source_type.

Referenced by Station::~Station(), and Town::~Town().

void CargoPacket::InvalidateAllFrom ( StationID  sid)
static

Invalidates (sets source to INVALID_STATION) all cargo packets from given station.

Parameters
sidStation that gets removed.

Definition at line 141 of file cargopacket.cpp.

References FOR_ALL_CARGOPACKETS, and source.

TileIndex CargoPacket::LoadedAtXY ( ) const
inline

Gets the coordinates of the cargo's last loading station.

Returns
Last loading station's coordinates.

Definition at line 178 of file cargopacket.h.

References loaded_at_xy.

Referenced by CargoPayment::PayTransfer().

void CargoPacket::Merge ( CargoPacket cp)

Merge another packet into this one.

Parameters
cpPacket to be merged in.

Definition at line 106 of file cargopacket.cpp.

References count, and feeder_share.

Referenced by CargoList< Tinst, Tcont >::TryMerge().

StationID CargoPacket::NextStation ( ) const
inline

Gets the ID of station the cargo wants to go next.

Returns
Next station for this packets.

Definition at line 187 of file cargopacket.h.

References next_station.

Referenced by CargoTransfer::operator()(), and VehicleCargoReroute::operator()().

void CargoPacket::Reduce ( uint  count)

Reduce the packet by the given amount and remove the feeder share.

Parameters
countAmount to be removed.

Definition at line 117 of file cargopacket.cpp.

References count, feeder_share, and FeederShare().

Referenced by CargoRemoval< Tsource >::Postprocess(), and StationCargoList::Truncate().

void CargoPacket::SetLoadPlace ( TileIndex  load_place)
inline

Sets the tile where the packet was loaded last.

Parameters
load_placeTile where the packet was loaded last.

Definition at line 83 of file cargopacket.h.

References loaded_at_xy.

Referenced by CargoLoad::operator()(), and CargoReservation::operator()().

void CargoPacket::SetNextStation ( StationID  next_station)
inline

Sets the station where the packet is supposed to go next.

Parameters
next_stationNext station the packet should go to.

Definition at line 89 of file cargopacket.h.

References next_station.

Referenced by VehicleCargoReroute::operator()().

StationID CargoPacket::SourceStation ( ) const
inline

Gets the ID of the station where the cargo was loaded for the first time.

Returns
StationID.

Definition at line 160 of file cargopacket.h.

References source.

Referenced by StationViewWindow::BuildCargoList(), StationCargoReroute::operator()(), and VehicleCargoReroute::operator()().

TileIndex CargoPacket::SourceStationXY ( ) const
inline

Gets the coordinates of the cargo's source station.

Returns
Source station's coordinates.

Definition at line 169 of file cargopacket.h.

References source_xy.

Referenced by CargoPayment::PayFinalDelivery().

SourceID CargoPacket::SourceSubsidyID ( ) const
inline

Gets the ID of the cargo's source.

An IndustryID, TownID or CompanyID.

Returns
Source ID.

Definition at line 151 of file cargopacket.h.

References source_id.

Referenced by CargoPayment::PayFinalDelivery().

SourceType CargoPacket::SourceSubsidyType ( ) const
inline

Gets the type of the cargo's source.

industry, town or head quarter.

Returns
Source type.

Definition at line 142 of file cargopacket.h.

References source_type.

Referenced by CargoPayment::PayFinalDelivery().

CargoPacket * CargoPacket::Split ( uint  new_size)

Friends And Related Function Documentation

friend class CargoList
friend

The CargoList caches, thus needs to know about it.

Definition at line 59 of file cargopacket.h.

struct SaveLoad* GetCargoPacketDesc ( )
friend

We want this to be saved, right?

Returns
the saveload description for CargoPackets.

Definition at line 94 of file cargopacket_sl.cpp.

Field Documentation

const uint16 CargoPacket::MAX_COUNT = UINT16_MAX
static

Maximum number of items in a single cargo packet.

Definition at line 66 of file cargopacket.h.

Referenced by CargoList< Tinst, Tcont >::TryMerge().


The documentation for this struct was generated from the following files: