(svn r17836) -Codechange: split the CargoPacket constructor for creating 'real' new CargoPackets and saveload. For saveload we do not need to set anything except two variables (the rest is always overwritten by the load), for new 'real' cargo also pass the source_xy; dereferencing st before calling is easier than resolving st->index back to st and then dereferencing. Also don't set loaded_at_xy because that is of no importance when not loaded in a vehicle.

This commit is contained in:
rubidium
2009-10-20 22:24:34 +00:00
parent b124e9e874
commit 61720eede3
3 changed files with 22 additions and 13 deletions

View File

@@ -26,18 +26,20 @@ void InitializeCargoPackets()
_cargopacket_pool.CleanPool();
}
CargoPacket::CargoPacket(StationID source, uint16 count, SourceType source_type, SourceID source_id) :
CargoPacket::CargoPacket()
{
this->source_type = ST_INDUSTRY;
this->source_id = INVALID_SOURCE;
}
CargoPacket::CargoPacket(StationID source, TileIndex source_xy, uint16 count, SourceType source_type, SourceID source_id) :
count(count),
source_id(source_id),
source(source)
source(source),
source_xy(source_xy)
{
this->source_type = source_type;
if (source != INVALID_STATION) {
assert(count != 0);
this->source_xy = Station::Get(source)->xy;
this->loaded_at_xy = this->source_xy;
}
assert(count != 0);
this->source_type = source_type;
}
CargoPacket::CargoPacket(uint16 count, byte days_in_transit, StationID source, TileIndex source_xy, TileIndex loaded_at_xy, Money feeder_share, SourceType source_type, SourceID source_id) :
@@ -49,6 +51,7 @@ CargoPacket::CargoPacket(uint16 count, byte days_in_transit, StationID source, T
source_xy(source_xy),
loaded_at_xy(loaded_at_xy)
{
assert(count != 0);
this->source_type = source_type;
}