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.
FORCEINLINE uint16 Count () const
 Gets the number of 'items' in this packet.
FORCEINLINE Money FeederShare () const
 Gets the amount of money already paid to earlier vehicles in the feeder chain.
FORCEINLINE byte DaysInTransit () const
 Gets the number of days this cargo has been in transit.
FORCEINLINE SourceType SourceSubsidyType () const
 Gets the type of the cargo's source.
FORCEINLINE SourceID SourceSubsidyID () const
 Gets the ID of the cargo's source.
FORCEINLINE SourceID SourceStation () const
 Gets the ID of the station where the cargo was loaded for the first time.
FORCEINLINE TileIndex SourceStationXY () const
 Gets the coordinates of the cargo's source station.
FORCEINLINE TileIndex LoadedAtXY () const
 Gets the coordinates of the cargo's last loading station.

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 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).
TileIndex loaded_at_xy
 Location where this cargo has been loaded into the vehicle.

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?

Detailed Description

Container for cargo from the same location and time.

Definition at line 42 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:
source Source station of the packet.
source_xy Source location of the packet.
count Number of cargo entities to put in this packet.
source_type 'Type' of source the packet comes from (for subsidies).
source_id Actual 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 42 of file cargopacket.cpp.

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:
count Number of cargo entities to put in this packet.
days_in_transit Number of days the cargo has been in transit.
source Station the cargo was initially loaded.
source_xy Station location the cargo was initially loaded.
loaded_at_xy Location the cargo was loaded last.
feeder_share Feeder share the packet has already accumulated.
source_type 'Type' of source the packet comes from (for subsidies).
source_id Actual 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 69 of file cargopacket.cpp.

CargoPacket::~CargoPacket (  )  [inline]

Destroy the packet.

Definition at line 68 of file cargopacket.h.


Member Function Documentation

FORCEINLINE uint16 CargoPacket::Count (  )  const [inline]

Gets the number of 'items' in this packet.

Returns:
Item count.

Definition at line 77 of file cargopacket.h.

References count.

Referenced by StationViewWindow::BuildCargoList().

FORCEINLINE 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 98 of file cargopacket.h.

References days_in_transit.

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

FORCEINLINE 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 87 of file cargopacket.h.

References feeder_share.

Referenced by CargoPayment::PayFinalDelivery().

void CargoPacket::InvalidateAllFrom ( StationID  sid  )  [static]

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

Parameters:
sid Station that gets removed.

Definition at line 126 of file cargopacket.cpp.

References FOR_ALL_CARGOPACKETS, and source.

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

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

Parameters:
src_type Type of source.
src Index of source.

Definition at line 114 of file cargopacket.cpp.

References FOR_ALL_CARGOPACKETS, INVALID_SOURCE, source_id, and source_type.

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

FORCEINLINE TileIndex CargoPacket::LoadedAtXY (  )  const [inline]

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

Returns:
Last loading station's coordinates.

Definition at line 143 of file cargopacket.h.

References loaded_at_xy.

Referenced by CargoPayment::PayTransfer().

FORCEINLINE void CargoPacket::Merge ( CargoPacket cp  ) 

Merge another packet into this one.

Parameters:
cp Packet to be merged in.

Definition at line 102 of file cargopacket.cpp.

References count, and feeder_share.

Referenced by StationCargoList::Append(), and VehicleCargoList::Append().

FORCEINLINE SourceID CargoPacket::SourceStation (  )  const [inline]

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

Returns:
StationID.

Definition at line 125 of file cargopacket.h.

References source.

Referenced by StationViewWindow::BuildCargoList().

FORCEINLINE TileIndex CargoPacket::SourceStationXY (  )  const [inline]

Gets the coordinates of the cargo's source station.

Returns:
Source station's coordinates.

Definition at line 134 of file cargopacket.h.

References source_xy.

Referenced by CargoPayment::PayFinalDelivery().

FORCEINLINE SourceID CargoPacket::SourceSubsidyID (  )  const [inline]

Gets the ID of the cargo's source.

An IndustryID, TownID or CompanyID.

Returns:
Source ID.

Definition at line 116 of file cargopacket.h.

References source_id.

Referenced by CargoPayment::PayFinalDelivery().

FORCEINLINE SourceType CargoPacket::SourceSubsidyType (  )  const [inline]

Gets the type of the cargo's source.

industry, town or head quarter.

Returns:
Source type.

Definition at line 107 of file cargopacket.h.

References source_type.

Referenced by CargoPayment::PayFinalDelivery().

FORCEINLINE CargoPacket * CargoPacket::Split ( uint  new_size  ) 

Split this packet in two and return the split off part.

Parameters:
new_size Size of the remaining part.
Returns:
Split off part, or NULL if no packet could be allocated!

Definition at line 87 of file cargopacket.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_cargopacket_pool >::CanAllocateItem(), CargoPacket(), count, days_in_transit, feeder_share, loaded_at_xy, source, source_id, source_type, and source_xy.

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


Friends And Related Function Documentation

friend class CargoList [friend]

The CargoList caches, thus needs to know about it.

Definition at line 54 of file cargopacket.h.

struct SaveLoad* GetCargoPacketDesc (  )  [friend]

We want this to be saved, right?

Returns:
the saveload description for CargoPackets.

Definition at line 87 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 61 of file cargopacket.h.

Referenced by StationCargoList::Append(), and VehicleCargoList::Append().


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

Generated on Fri May 27 04:20:33 2011 for OpenTTD by  doxygen 1.6.1