|
|
/* $Id$ */
|
|
|
|
|
|
/** @file cargopacket.cpp Implementation of the cargo packets */
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
#include "openttd.h"
|
|
|
#include "station_base.h"
|
|
|
#include "cargopacket.h"
|
|
|
#include "saveload.h"
|
|
|
#include "oldpool_func.h"
|
|
|
|
|
|
/* Initialize the cargopacket-pool */
|
|
|
DEFINE_OLD_POOL_GENERIC(CargoPacket, CargoPacket)
|
|
|
|
|
|
void InitializeCargoPackets()
|
|
|
{
|
|
|
/* Clean the cargo packet pool and create 1 block in it */
|
|
|
_CargoPacket_pool.CleanPool();
|
|
|
_CargoPacket_pool.AddBlockToPool();
|
|
|
}
|
|
|
|
|
@@ -34,60 +32,24 @@ CargoPacket::CargoPacket(StationID sourc
|
|
|
}
|
|
|
|
|
|
CargoPacket::~CargoPacket()
|
|
|
{
|
|
|
this->count = 0;
|
|
|
}
|
|
|
|
|
|
bool CargoPacket::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;
|
|
|
}
|
|
|
|
|
|
static const SaveLoad _cargopacket_desc[] = {
|
|
|
SLE_VAR(CargoPacket, source, SLE_UINT16),
|
|
|
SLE_VAR(CargoPacket, source_xy, SLE_UINT32),
|
|
|
SLE_VAR(CargoPacket, loaded_at_xy, SLE_UINT32),
|
|
|
SLE_VAR(CargoPacket, count, SLE_UINT16),
|
|
|
SLE_VAR(CargoPacket, days_in_transit, SLE_UINT8),
|
|
|
SLE_VAR(CargoPacket, feeder_share, SLE_INT64),
|
|
|
SLE_VAR(CargoPacket, paid_for, SLE_BOOL),
|
|
|
|
|
|
SLE_END()
|
|
|
};
|
|
|
|
|
|
static void Save_CAPA()
|
|
|
{
|
|
|
CargoPacket *cp;
|
|
|
|
|
|
FOR_ALL_CARGOPACKETS(cp) {
|
|
|
SlSetArrayIndex(cp->index);
|
|
|
SlObject(cp, _cargopacket_desc);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
static void Load_CAPA()
|
|
|
{
|
|
|
int index;
|
|
|
|
|
|
while ((index = SlIterateArray()) != -1) {
|
|
|
CargoPacket *cp = new (index) CargoPacket();
|
|
|
SlObject(cp, _cargopacket_desc);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
extern const ChunkHandler _cargopacket_chunk_handlers[] = {
|
|
|
{ 'CAPA', Save_CAPA, Load_CAPA, CH_ARRAY | CH_LAST},
|
|
|
};
|
|
|
|
|
|
/*
|
|
|
*
|
|
|
* Cargo list implementation
|
|
|
*
|
|
|
*/
|
|
|
|
|
|
CargoList::~CargoList()
|
|
|
{
|
|
|
while (!packets.empty()) {
|
|
|
delete packets.front();
|
|
|
packets.pop_front();
|
|
|
}
|