Mercurial > hg > openttd
changeset 13292:83cbdcfbcf11 draft
(svn r17801) -Codechange: for StationCargoLists the 'loaded_at_xy' does not matter when merging CargoPackets
author | rubidium <rubidium@openttd.org> |
---|---|
date | Sun, 18 Oct 2009 14:30:37 +0000 |
parents | 07fc7c78b30b |
children | cc367d877409 |
files | src/cargopacket.cpp src/cargopacket.h |
diffstat | 2 files changed, 32 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cargopacket.cpp +++ b/src/cargopacket.cpp @@ -111,7 +111,7 @@ 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;
--- a/src/cargopacket.h +++ b/src/cargopacket.h @@ -115,20 +115,6 @@ } - /** - * 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 @@ * 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 @@ 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 */