mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-11 13:10:45 +00:00
(svn r17801) -Codechange: for StationCargoLists the 'loaded_at_xy' does not matter when merging CargoPackets
This commit is contained in:
parent
e553983e39
commit
be57392ba3
@ -111,7 +111,7 @@ void CargoList<Tinst>::Append(CargoPacket *cp)
|
||||
|
||||
for (List::iterator it = this->packets.begin(); it != this->packets.end(); it++) {
|
||||
CargoPacket *icp = *it;
|
||||
if (icp->SameSource(cp) && icp->count + cp->count <= CargoPacket::MAX_COUNT) {
|
||||
if (Tinst::AreMergable(icp, cp) && icp->count + cp->count <= CargoPacket::MAX_COUNT) {
|
||||
icp->count += cp->count;
|
||||
icp->feeder_share += cp->feeder_share;
|
||||
|
||||
|
@ -115,20 +115,6 @@ public:
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checks whether the cargo packet is from (exactly) the same source
|
||||
* in time and location.
|
||||
* @param cp the cargo packet to compare to
|
||||
* @return true if and only if days_in_transit and source_xy are equal
|
||||
*/
|
||||
FORCEINLINE bool SameSource(const CargoPacket *cp) const
|
||||
{
|
||||
return this->source_xy == cp->source_xy &&
|
||||
this->days_in_transit == cp->days_in_transit &&
|
||||
this->source_type == cp->source_type &&
|
||||
this->source_id == cp->source_id;
|
||||
}
|
||||
|
||||
static void InvalidateAllFrom(SourceType src_type, SourceID src);
|
||||
};
|
||||
|
||||
@ -301,6 +287,22 @@ public:
|
||||
* Ages the all cargo in this list
|
||||
*/
|
||||
void AgeCargo();
|
||||
|
||||
/**
|
||||
* Are two the two CargoPackets mergeable in the context of
|
||||
* a list of CargoPackets for a Vehicle?
|
||||
* @param cp1 the first CargoPacket
|
||||
* @param cp2 the second CargoPacket
|
||||
* @return true if they are mergeable
|
||||
*/
|
||||
static bool AreMergable(const CargoPacket *cp1, const CargoPacket *cp2)
|
||||
{
|
||||
return cp1->source_xy == cp2->source_xy &&
|
||||
cp1->days_in_transit == cp2->days_in_transit &&
|
||||
cp1->source_type == cp2->source_type &&
|
||||
cp1->source_id == cp2->source_id &&
|
||||
cp1->loaded_at_xy == cp2->loaded_at_xy;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
@ -310,6 +312,21 @@ class StationCargoList : public CargoList<StationCargoList> {
|
||||
public:
|
||||
/** The stations, via GoodsEntry, have a CargoList. */
|
||||
friend const struct SaveLoad *GetGoodsDesc();
|
||||
|
||||
/**
|
||||
* Are two the two CargoPackets mergeable in the context of
|
||||
* a list of CargoPackets for a Vehicle?
|
||||
* @param cp1 the first CargoPacket
|
||||
* @param cp2 the second CargoPacket
|
||||
* @return true if they are mergeable
|
||||
*/
|
||||
static bool AreMergable(const CargoPacket *cp1, const CargoPacket *cp2)
|
||||
{
|
||||
return cp1->source_xy == cp2->source_xy &&
|
||||
cp1->days_in_transit == cp2->days_in_transit &&
|
||||
cp1->source_type == cp2->source_type &&
|
||||
cp1->source_id == cp2->source_id;
|
||||
}
|
||||
};
|
||||
|
||||
#endif /* CARGOPACKET_H */
|
||||
|
Loading…
Reference in New Issue
Block a user