diff --git a/src/aircraft_gui.cpp b/src/aircraft_gui.cpp index efe29292fe..29fb16965e 100644 --- a/src/aircraft_gui.cpp +++ b/src/aircraft_gui.cpp @@ -56,10 +56,10 @@ void DrawAircraftDetails(const Aircraft *v, const Rect &r) /* Cargo names (fix pluralness) */ SetDParam(0, u->cargo_type); SetDParam(1, cargo_count); - SetDParam(2, u->cargo.Source()); + SetDParam(2, u->cargo.GetFirstStation()); DrawString(r.left, r.right, y, STR_VEHICLE_DETAILS_CARGO_FROM); y += FONT_HEIGHT_NORMAL; - feeder_share += u->cargo.FeederShare(); + feeder_share += u->cargo.GetFeederShare(); } } } diff --git a/src/cargoaction.cpp b/src/cargoaction.cpp index 672fc9f9a0..de0a37c558 100644 --- a/src/cargoaction.cpp +++ b/src/cargoaction.cpp @@ -167,7 +167,7 @@ bool CargoTransfer::operator()(CargoPacket *cp) if (cp_new == nullptr) return false; this->source->RemoveFromMeta(cp_new, VehicleCargoList::MTA_TRANSFER, cp_new->Count()); /* No transfer credits here as they were already granted during Stage(). */ - this->destination->Append(cp_new, cp_new->NextStation()); + this->destination->Append(cp_new, cp_new->GetNextStation()); return cp_new == cp; } @@ -194,7 +194,7 @@ bool StationCargoReroute::operator()(CargoPacket *cp) { CargoPacket *cp_new = this->Preprocess(cp); if (cp_new == nullptr) cp_new = cp; - StationID next = this->ge->GetVia(cp_new->SourceStation(), this->avoid, this->avoid2); + StationID next = this->ge->GetVia(cp_new->GetFirstStation(), this->avoid, this->avoid2); assert(next != this->avoid && next != this->avoid2); if (this->source != this->destination) { this->source->RemoveFromCache(cp_new, cp_new->Count()); @@ -218,8 +218,8 @@ bool VehicleCargoReroute::operator()(CargoPacket *cp, std::vector { CargoPacket *cp_new = this->Preprocess(cp); if (cp_new == nullptr) cp_new = cp; - if (cp_new->NextStation() == this->avoid || cp_new->NextStation() == this->avoid2) { - cp->SetNextStation(this->ge->GetVia(cp_new->SourceStation(), this->avoid, this->avoid2)); + if (cp_new->GetNextStation() == this->avoid || cp_new->GetNextStation() == this->avoid2) { + cp->SetNextStation(this->ge->GetVia(cp_new->GetFirstStation(), this->avoid, this->avoid2)); } if (unlikely(this->source != this->destination)) { this->source->RemoveFromMeta(cp_new, VehicleCargoList::MTA_TRANSFER, cp_new->Count()); diff --git a/src/cargopacket.cpp b/src/cargopacket.cpp index 679d824b87..eb38b7edad 100644 --- a/src/cargopacket.cpp +++ b/src/cargopacket.cpp @@ -108,23 +108,21 @@ CargoPacket::CargoPacket() /** * Creates a new cargo packet. - * @param source Source station of the packet. - * @param source_xy Source location of the packet. - * @param count Number of cargo entities to put in this packet. - * @param source_type 'Type' of source the packet comes from (for subsidies). - * @param source_id Actual source of the packet (for subsidies). + * @param first_station Source station of the packet. + * @param source_xy Source location of the packet. + * @param count Number of cargo entities to put in this packet. + * @param source_type 'Type' of source the packet comes from (for subsidies). + * @param source_id Actual source of the packet (for subsidies). * @pre 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. */ -CargoPacket::CargoPacket(StationID source, TileIndex source_xy, uint16 count, SourceType source_type, SourceID source_id) : +CargoPacket::CargoPacket(StationID first_station, TileIndex source_xy, uint16 count, SourceType source_type, SourceID source_id) : count(count), - days_in_transit(0), - feeder_share(0), source_xy(source_xy), source_id(source_id), - source(source), - source_type(source_type) + source_type(source_type), + first_station(first_station) { dbg_assert(count != 0); } @@ -132,24 +130,24 @@ CargoPacket::CargoPacket(StationID source, TileIndex source_xy, uint16 count, So /** * Creates a new cargo packet. Initializes the fields that cannot be changed later. * Used when loading or splitting packets. - * @param count Number of cargo entities to put in this packet. - * @param days_in_transit Number of days the cargo has been in transit. - * @param source Station the cargo was initially loaded. - * @param source_xy Station location the cargo was initially loaded. - * @param feeder_share Feeder share the packet has already accumulated. - * @param source_type 'Type' of source the packet comes from (for subsidies). - * @param source_id Actual source of the packet (for subsidies). + * @param count Number of cargo entities to put in this packet. + * @param periods_in_transit Number of cargo aging periods the cargo has been in transit. + * @param first_station Station the cargo was initially loaded. + * @param source_xy Station location the cargo was initially loaded. + * @param feeder_share Feeder share the packet has already accumulated. + * @param source_type 'Type' of source the packet comes from (for subsidies). + * @param 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. */ -CargoPacket::CargoPacket(uint16 count, uint16 days_in_transit, StationID source, TileIndex source_xy, Money feeder_share, SourceType source_type, SourceID source_id) : +CargoPacket::CargoPacket(uint16 count, uint16 periods_in_transit, StationID first_station, TileIndex source_xy, Money feeder_share, SourceType source_type, SourceID source_id) : count(count), - days_in_transit(days_in_transit), + periods_in_transit(periods_in_transit), feeder_share(feeder_share), source_xy(source_xy), source_id(source_id), - source(source), - source_type(source_type) + source_type(source_type), + first_station(first_station) { dbg_assert(count != 0); } @@ -173,8 +171,8 @@ CargoPacket *CargoPacket::Split(uint new_size) { if (!CargoPacket::CanAllocateItem()) return nullptr; - Money fs = this->FeederShare(new_size); - CargoPacket *cp_new = new CargoPacket(new_size, this->days_in_transit, this->source, this->source_xy, fs, this->source_type, this->source_id); + Money fs = this->GetFeederShare(new_size); + CargoPacket *cp_new = new CargoPacket(new_size, this->periods_in_transit, this->first_station, this->source_xy, fs, this->source_type, this->source_id); this->feeder_share -= fs; if (this->flags & CPF_HAS_DEFERRED_PAYMENT) { @@ -226,7 +224,7 @@ void CargoPacket::Merge(CargoPacket *cp) void CargoPacket::Reduce(uint count) { dbg_assert(count < this->count); - this->feeder_share -= this->FeederShare(count); + this->feeder_share -= this->GetFeederShare(count); if (this->flags & CPF_HAS_DEFERRED_PAYMENT) { IterateCargoPacketDeferredPayments(this->index, false, [&](Money &payment, CompanyID cid, VehicleType type) { payment -= payment * count / static_cast(this->count); @@ -282,7 +280,7 @@ void CargoPacket::PayDeferredPayments() /* static */ void CargoPacket::InvalidateAllFrom(StationID sid) { for (CargoPacket *cp : CargoPacket::Iterate()) { - if (cp->source == sid) cp->source = INVALID_STATION; + if (cp->first_station == sid) cp->first_station = INVALID_STATION; } } @@ -326,7 +324,7 @@ void CargoList::OnCleanPool() /** * Update the cached values to reflect the removal of this packet or part of it. - * Decreases count and days_in_transit. + * Decreases count and periods_in_transit. * @param cp Packet to be removed from cache. * @param count Amount of cargo from the given packet to be removed. */ @@ -334,20 +332,20 @@ template void CargoList::RemoveFromCache(const CargoPacket *cp, uint count) { dbg_assert(count <= cp->count); - this->count -= count; - this->cargo_days_in_transit -= static_cast(cp->days_in_transit) * count; + this->count -= count; + this->cargo_periods_in_transit -= static_cast(cp->periods_in_transit) * count; } /** * Update the cache to reflect adding of this packet. - * Increases count and days_in_transit. + * Increases count and periods_in_transit. * @param cp New packet to be inserted. */ template void CargoList::AddToCache(const CargoPacket *cp) { - this->count += cp->count; - this->cargo_days_in_transit += static_cast(cp->days_in_transit) * cp->count; + this->count += cp->count; + this->cargo_periods_in_transit += static_cast(cp->periods_in_transit) * cp->count; } /** Invalidates the cached data and rebuilds it. */ @@ -355,7 +353,7 @@ template void CargoList::InvalidateCache() { this->count = 0; - this->cargo_days_in_transit = 0; + this->cargo_periods_in_transit = 0; for (ConstIterator it(this->packets.begin()); it != this->packets.end(); it++) { static_cast(this)->AddToCache(*it); @@ -510,19 +508,19 @@ void VehicleCargoList::PopCargo(Taction action) /** * Update the cached values to reflect the removal of this packet or part of it. - * Decreases count, feeder share and days_in_transit. + * Decreases count, feeder share and periods_in_transit. * @param cp Packet to be removed from cache. * @param count Amount of cargo from the given packet to be removed. */ void VehicleCargoList::RemoveFromCache(const CargoPacket *cp, uint count) { - this->feeder_share -= cp->FeederShare(count); + this->feeder_share -= cp->GetFeederShare(count); this->Parent::RemoveFromCache(cp, count); } /** * Update the cache to reflect adding of this packet. - * Increases count, feeder share and days_in_transit. + * Increases count, feeder share and periods_in_transit. * @param cp New packet to be inserted. */ void VehicleCargoList::AddToCache(const CargoPacket *cp) @@ -566,10 +564,10 @@ void VehicleCargoList::AgeCargo() { for (const auto &cp : this->packets) { /* If we're at the maximum, then we can't increase no more. */ - if (cp->days_in_transit == UINT16_MAX) continue; + if (cp->periods_in_transit == UINT16_MAX) continue; - cp->days_in_transit++; - this->cargo_days_in_transit += cp->count; + cp->periods_in_transit++; + this->cargo_periods_in_transit += cp->count; } } @@ -586,7 +584,7 @@ void VehicleCargoList::AgeCargo() StationID current_station, bool accepted, StationIDStack next_station) { if (cargo_next == INVALID_STATION) { - return (accepted && cp->source != current_station) ? MTA_DELIVER : MTA_KEEP; + return (accepted && cp->first_station != current_station) ? MTA_DELIVER : MTA_KEEP; } else if (cargo_next == current_station) { return MTA_DELIVER; } else if (next_station.Contains(cargo_next)) { @@ -633,13 +631,13 @@ bool VehicleCargoList::Stage(bool accepted, StationID current_station, StationID MoveToAction action = MTA_LOAD; if (force_keep) { action = MTA_KEEP; - } else if (force_unload && accepted && cp->source != current_station) { + } else if (force_unload && accepted && cp->first_station != current_station) { action = MTA_DELIVER; } else if (force_transfer) { action = MTA_TRANSFER; /* We cannot send the cargo to any of the possible next hops and * also not to the current station. */ - FlowStatMap::const_iterator flow_it(flows.find(cp->source)); + FlowStatMap::const_iterator flow_it(flows.find(cp->first_station)); if (flow_it == flows.end()) { cargo_next = INVALID_STATION; } else { @@ -658,11 +656,11 @@ bool VehicleCargoList::Stage(bool accepted, StationID current_station, StationID } else { /* Rewrite an invalid source station to some random other one to * avoid keeping the cargo in the vehicle forever. */ - if (cp->source == INVALID_STATION && !flows.empty()) { - cp->source = flows.FirstStationID(); + if (cp->first_station == INVALID_STATION && !flows.empty()) { + cp->first_station = flows.FirstStationID(); } bool restricted = false; - FlowStatMap::const_iterator flow_it(flows.find(cp->source)); + FlowStatMap::const_iterator flow_it(flows.find(cp->first_station)); if (flow_it == flows.end()) { cargo_next = INVALID_STATION; } else { @@ -861,7 +859,7 @@ uint VehicleCargoList::Reroute(uint max_move, VehicleCargoList *dest, StationID uint VehicleCargoList::RerouteFromSource(uint max_move, VehicleCargoList *dest, StationID source, StationID avoid, StationID avoid2, const GoodsEntry *ge) { max_move = std::min(this->action_counts[MTA_TRANSFER], max_move); - this->ShiftCargoWithFrontInsert(VehicleCargoReroute(this, dest, max_move, avoid, avoid2, ge), [source](CargoPacket *cp) { return cp->SourceStation() == source; }); + this->ShiftCargoWithFrontInsert(VehicleCargoReroute(this, dest, max_move, avoid, avoid2, ge), [source](CargoPacket *cp) { return cp->GetFirstStation() == source; }); return max_move; } @@ -968,7 +966,7 @@ bool StationCargoList::ShiftCargoFromSource(Taction &action, StationID source, S for (Iterator it = this->packets.lower_bound(next); it != this->packets.end() && it.GetKey() == next;) { if (action.MaxMove() == 0) return false; CargoPacket *cp = *it; - if (cp->SourceStation() != source) { + if (cp->GetFirstStation() != source) { ++it; continue; } @@ -1039,7 +1037,7 @@ uint StationCargoList::Truncate(uint max_move, StationCargoAmountMap *cargo_per_ CargoPacket *cp = *it; if (prev_count > max_move && RandomRange(prev_count) < prev_count - max_move) { if (do_count && loop == 0) { - (*cargo_per_source)[cp->source] += cp->count; + (*cargo_per_source)[cp->first_station] += cp->count; } ++it; continue; @@ -1052,16 +1050,16 @@ uint StationCargoList::Truncate(uint max_move, StationCargoAmountMap *cargo_per_ moved += diff; } if (loop > 0) { - if (do_count) (*cargo_per_source)[cp->source] -= diff; + if (do_count) (*cargo_per_source)[cp->first_station] -= diff; return moved; } else { - if (do_count) (*cargo_per_source)[cp->source] += cp->count; + if (do_count) (*cargo_per_source)[cp->first_station] += cp->count; ++it; } } else { it = this->packets.erase(it); if (do_count && loop > 0) { - (*cargo_per_source)[cp->source] -= cp->count; + (*cargo_per_source)[cp->first_station] -= cp->count; } moved += cp->count; this->RemoveFromCache(cp, cp->count); diff --git a/src/cargopacket.h b/src/cargopacket.h index 63f85f48bd..d3e7f0a506 100644 --- a/src/cargopacket.h +++ b/src/cargopacket.h @@ -51,15 +51,15 @@ void ChangeOwnershipOfCargoPacketDeferredPayments(Owner old_owner, Owner new_own */ struct CargoPacket : CargoPacketPool::PoolItem<&_cargopacket_pool> { private: - uint16 count; ///< The amount of cargo in this packet. - uint16 days_in_transit; ///< Amount of days this packet has been in transit. - Money feeder_share; ///< Value of feeder pickup to be paid for on delivery of cargo. - TileIndex source_xy; ///< The origin of the cargo (first station in feeder chain). - StationID next_station; ///< Station where the cargo wants to go next. - SourceID source_id; ///< Index of source, INVALID_SOURCE if unknown/invalid. - StationID source; ///< The station where the cargo came from first. - SourceType source_type; ///< Type of \c source_id. - uint8 flags = 0; ///< NOSAVE: temporary flags + uint16 count = 0; ///< The amount of cargo in this packet. + uint16 periods_in_transit = 0; ///< Amount of cargo aging periods this packet has been in transit. + Money feeder_share = 0; ///< Value of feeder pickup to be paid for on delivery of cargo. + TileIndex source_xy = 0; ///< The origin of the cargo. + SourceID source_id = INVALID_SOURCE; ///< Index of industry/town/HQ, INVALID_SOURCE if unknown/invalid. + SourceType source_type = SourceType::Industry; ///< Type of \c source_id. + uint8 flags = 0; ///< NOSAVE: temporary flags + StationID first_station = INVALID_STATION; ///< The station where the cargo came from first. + StationID next_station = INVALID_STATION; ///< Station where the cargo wants to go next. /** Cargo packet flag bits in CargoPacket::flags. */ enum CargoPacketFlags { @@ -79,8 +79,8 @@ public: static const uint16 MAX_COUNT = UINT16_MAX; CargoPacket(); - CargoPacket(StationID source, TileIndex source_xy, uint16 count, SourceType source_type, SourceID source_id); - CargoPacket(uint16 count, uint16 days_in_transit, StationID source, TileIndex source_xy, Money feeder_share = 0, SourceType source_type = SourceType::Industry, SourceID source_id = INVALID_SOURCE); + CargoPacket(StationID first_station, TileIndex source_xy, uint16 count, SourceType source_type, SourceID source_id); + CargoPacket(uint16 count, uint16 periods_in_transit, StationID source, TileIndex source_xy, Money feeder_share = 0, SourceType source_type = SourceType::Industry, SourceID source_id = INVALID_SOURCE); ~CargoPacket(); CargoPacket *Split(uint new_size); @@ -91,13 +91,19 @@ public: * Sets the station where the packet is supposed to go next. * @param next_station Next station the packet should go to. */ - void SetNextStation(StationID next_station) { this->next_station = next_station; } + void SetNextStation(StationID next_station) + { + this->next_station = next_station; + } /** * Adds some feeder share to the packet. * @param new_share Feeder share to be added. */ - void AddFeederShare(Money new_share) { this->feeder_share += new_share; } + void AddFeederShare(Money new_share) + { + this->feeder_share += new_share; + } /** * Gets the number of 'items' in this packet. @@ -113,7 +119,7 @@ public: * the feeder chain. * @return Feeder share. */ - inline Money FeederShare() const + inline Money GetFeederShare() const { return this->feeder_share; } @@ -124,7 +130,7 @@ public: * @param part Amount of cargo to get the share for. * @return Feeder share for the given amount of cargo. */ - inline Money FeederShare(uint part) const + inline Money GetFeederShare(uint part) const { return this->feeder_share * part / static_cast(this->count); } @@ -138,16 +144,16 @@ public: * it is capped at UINT16_MAX. * @return Length this cargo has been in transit. */ - inline uint16 DaysInTransit() const + inline uint16 GetPeriodsInTransit() const { - return this->days_in_transit; + return this->periods_in_transit; } /** * Gets the type of the cargo's source. industry, town or head quarter. * @return Source type. */ - inline SourceType SourceSubsidyType() const + inline SourceType GetSourceType() const { return this->source_type; } @@ -156,7 +162,7 @@ public: * Gets the ID of the cargo's source. An IndustryID, TownID or CompanyID. * @return Source ID. */ - inline SourceID SourceSubsidyID() const + inline SourceID GetSourceID() const { return this->source_id; } @@ -165,16 +171,16 @@ public: * Gets the ID of the station where the cargo was loaded for the first time. * @return StationID. */ - inline StationID SourceStation() const + inline StationID GetFirstStation() const { - return this->source; + return this->first_station; } /** - * Gets the coordinates of the cargo's source station. - * @return Source station's coordinates. + * Gets the coordinates of the cargo's source. + * @return Source coordinates of cargo. */ - inline TileIndex SourceStationXY() const + inline TileIndex GetSourceXY() const { return this->source_xy; } @@ -183,7 +189,7 @@ public: * Gets the ID of station the cargo wants to go next. * @return Next station for this packets. */ - inline StationID NextStation() const + inline StationID GetNextStation() const { return this->next_station; } @@ -223,10 +229,10 @@ public: }; protected: - uint count; ///< Cache for the number of cargo entities. - uint64 cargo_days_in_transit; ///< Cache for the sum of number of days in transit of each entity; comparable to man-hours. + uint count; ///< Cache for the number of cargo entities. + uint64 cargo_periods_in_transit; ///< Cache for the sum of number of cargo aging periods in transit of each entity; comparable to man-hours. - Tcont packets; ///< The cargo packets in this list. + Tcont packets; ///< The cargo packets in this list. void AddToCache(const CargoPacket *cp); @@ -252,12 +258,12 @@ public: } /** - * Returns average number of days in transit for a cargo entity. + * Returns average number of cargo aging periods in transit for a cargo entity. * @return The before mentioned number. */ - inline uint DaysInTransit() const + inline uint PeriodsInTransit() const { - return this->count == 0 ? 0 : this->cargo_days_in_transit / this->count; + return this->count == 0 ? 0 : this->cargo_periods_in_transit / this->count; } /** @@ -269,9 +275,9 @@ public: return this->count; } - inline uint64 CargoDaysInTransit() const + inline uint64 CargoPeriodsInTransit() const { - return this->cargo_days_in_transit; + return this->cargo_periods_in_transit; } void InvalidateCache(); @@ -357,19 +363,19 @@ public: friend class VehicleCargoReroute; /** - * Returns source of the first cargo packet in this list. - * @return The before mentioned source. + * Returns the first station of the first cargo packet in this list. + * @return The before mentioned station. */ - inline StationID Source() const + inline StationID GetFirstStation() const { - return this->count == 0 ? INVALID_STATION : this->packets.front()->source; + return this->count == 0 ? INVALID_STATION : this->packets.front()->first_station; } /** * Returns total sum of the feeder share for all packets. * @return The before mentioned number. */ - inline Money FeederShare() const + inline Money GetFeederShare() const { return this->feeder_share; } @@ -462,10 +468,10 @@ public: */ 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; + return cp1->source_xy == cp2->source_xy && + cp1->periods_in_transit == cp2->periods_in_transit && + cp1->source_type == cp2->source_type && + cp1->source_id == cp2->source_id; } }; @@ -528,12 +534,12 @@ public: } /** - * Returns source of the first cargo packet in this list. - * @return The before mentioned source. + * Returns first station of the first cargo packet in this list. + * @return The before mentioned station. */ - inline StationID Source() const + inline StationID GetFirstStation() const { - return this->count == 0 ? INVALID_STATION : this->packets.begin()->second.front()->source; + return this->count == 0 ? INVALID_STATION : this->packets.begin()->second.front()->first_station; } /** @@ -596,10 +602,10 @@ public: */ 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; + return cp1->source_xy == cp2->source_xy && + cp1->periods_in_transit == cp2->periods_in_transit && + cp1->source_type == cp2->source_type && + cp1->source_id == cp2->source_id; } }; diff --git a/src/cargotype.h b/src/cargotype.h index 9c0c297c0d..6346ebe61f 100644 --- a/src/cargotype.h +++ b/src/cargotype.h @@ -62,7 +62,7 @@ struct CargoSpec { uint8 weight; ///< Weight of a single unit of this cargo type in 1/16 ton (62.5 kg). uint16 multiplier; ///< Capacity multiplier for vehicles. (8 fractional bits) int32 initial_payment; ///< Initial payment rate before inflation is applied. - uint8 transit_days[2]; + uint8 transit_periods[2]; bool is_freight; ///< Cargo type is considered to be freight (affects train freight multiplier). TownEffect town_effect; ///< The effect that delivering this cargo type has on towns. Also affects destination of subsidies. diff --git a/src/economy.cpp b/src/economy.cpp index 5292c23b29..a512c33f03 100644 --- a/src/economy.cpp +++ b/src/economy.cpp @@ -1088,7 +1088,7 @@ Money GetPrice(Price index, uint cost_factor, const GRFFile *grf_file, int shift return cost; } -Money GetTransportedGoodsIncome(uint num_pieces, uint dist, uint16 transit_days, CargoID cargo_type) +Money GetTransportedGoodsIncome(uint num_pieces, uint dist, uint16 transit_periods, CargoID cargo_type) { const CargoSpec *cs = CargoSpec::Get(cargo_type); if (!cs->IsValid()) { @@ -1098,7 +1098,7 @@ Money GetTransportedGoodsIncome(uint num_pieces, uint dist, uint16 transit_days, /* Use callback to calculate cargo profit, if available */ if (HasBit(cs->callback_mask, CBM_CARGO_PROFIT_CALC)) { - uint32 var18 = ClampTo(dist) | (ClampTo(num_pieces) << 16) | (ClampTo(transit_days) << 24); + uint32 var18 = ClampTo(dist) | (ClampTo(num_pieces) << 16) | (ClampTo(transit_periods) << 24); uint16 callback = GetCargoCallback(CBID_CARGO_PROFIT_CALC, 0, var18, cs); if (callback != CALLBACK_FAILED) { int result = GB(callback, 0, 14); @@ -1118,22 +1118,22 @@ Money GetTransportedGoodsIncome(uint num_pieces, uint dist, uint16 transit_days, static const int TIME_FACTOR_FRAC_BITS = 4; static const int TIME_FACTOR_FRAC = 1 << TIME_FACTOR_FRAC_BITS; - if (_settings_game.economy.payment_algorithm == CPA_TRADITIONAL) transit_days = std::min(transit_days, 0xFFu); + if (_settings_game.economy.payment_algorithm == CPA_TRADITIONAL) transit_periods = std::min(transit_periods, 0xFFu); - const int days1 = cs->transit_days[0]; - const int days2 = cs->transit_days[1]; - const int days_over_days1 = std::max( transit_days - days1, 0); - const int days_over_days2 = std::max(days_over_days1 - days2, 0); - int days_over_max = 0; - if (_settings_game.economy.payment_algorithm == CPA_MODERN) { - days_over_max = MIN_TIME_FACTOR - MAX_TIME_FACTOR; - if (days2 > -days_over_max) days_over_max += transit_days - days1; - else days_over_max += 2 * (transit_days - days1) - days2; + const int periods1 = cs->transit_periods[0]; + const int periods2 = cs->transit_periods[1]; + const int periods_over_periods1 = std::max(transit_periods - periods1, 0); + const int periods_over_periods2 = std::max(periods_over_periods1 - periods2, 0); + int periods_over_max = MIN_TIME_FACTOR - MAX_TIME_FACTOR; + if (periods2 > -periods_over_max) { + periods_over_max += transit_periods - periods1; + } else { + periods_over_max += 2 * (transit_periods - periods1) - periods2; } /* * The time factor is calculated based on the time it took - * (transit_days) compared two cargo-depending values. The + * (transit_periods) compared two cargo-depending values. The * range is divided into four parts: * * - constant for fast transits @@ -1142,11 +1142,11 @@ Money GetTransportedGoodsIncome(uint num_pieces, uint dist, uint16 transit_days, * - after hitting MIN_TIME_FACTOR, the time factor will be asymptotically decreased to a limit of 1 with a scaled 1/(x+1) function. * */ - if (days_over_max > 0) { - const int time_factor = std::max(2 * MIN_TIME_FACTOR * TIME_FACTOR_FRAC * TIME_FACTOR_FRAC / (days_over_max + 2 * TIME_FACTOR_FRAC), 1); // MIN_TIME_FACTOR / (x/(2 * TIME_FACTOR_FRAC) + 1) + 1, expressed as fixed point with TIME_FACTOR_FRAC_BITS. + if (periods_over_max > 0) { + const int time_factor = std::max(2 * MIN_TIME_FACTOR * TIME_FACTOR_FRAC * TIME_FACTOR_FRAC / (periods_over_max + 2 * TIME_FACTOR_FRAC), 1); // MIN_TIME_FACTOR / (x/(2 * TIME_FACTOR_FRAC) + 1) + 1, expressed as fixed point with TIME_FACTOR_FRAC_BITS. return BigMulS(dist * time_factor * num_pieces, cs->current_payment, 21 + TIME_FACTOR_FRAC_BITS); } else { - const int time_factor = std::max(MAX_TIME_FACTOR - days_over_days1 - days_over_days2, MIN_TIME_FACTOR); + const int time_factor = std::max(MAX_TIME_FACTOR - periods_over_periods1 - periods_over_periods2, MIN_TIME_FACTOR); return BigMulS(dist * time_factor * num_pieces, cs->current_payment, 21); } } @@ -1323,14 +1323,14 @@ static uint DeliverGoodsToIndustry(const Station *st, CargoID cargo_type, uint n * @param cargo_type the type of cargo that is delivered * @param dest Station the cargo has been unloaded * @param source_tile The origin of the cargo for distance calculation - * @param days_in_transit Travel time + * @param periods_in_transit ravel time in cargo aging periods * @param company The company delivering the cargo * @param src_type Type of source of cargo (industry, town, headquarters) * @param src Index of source of cargo * @return Revenue for delivering cargo * @note The cargo is just added to the stockpile of the industry. It is due to the caller to trigger the industry's production machinery */ -static Money DeliverGoods(int num_pieces, CargoID cargo_type, StationID dest, TileIndex source_tile, uint16 days_in_transit, Company *company, SourceType src_type, SourceID src) +static Money DeliverGoods(int num_pieces, CargoID cargo_type, StationID dest, TileIndex source_tile, uint16 periods_in_transit, Company *company, SourceType src_type, SourceID src) { assert(num_pieces > 0); @@ -1357,7 +1357,7 @@ static Money DeliverGoods(int num_pieces, CargoID cargo_type, StationID dest, Ti st->town->received[cs->town_effect].new_act += accepted_total; /* Determine profit */ - Money profit = GetTransportedGoodsIncome(accepted_total, DistanceManhattan(source_tile, st->xy), days_in_transit, cargo_type); + Money profit = GetTransportedGoodsIncome(accepted_total, DistanceManhattan(source_tile, st->xy), periods_in_transit, cargo_type); /* Update the cargo monitor. */ AddCargoDelivery(cargo_type, company->index, accepted_total - accepted_ind, src_type, src, st); @@ -1462,9 +1462,9 @@ void CargoPayment::PayFinalDelivery(CargoPacket *cp, uint count) } /* Handle end of route payment */ - Money profit = DeliverGoods(count, this->ct, this->current_station, cp->SourceStationXY(), cp->DaysInTransit(), this->owner, cp->SourceSubsidyType(), cp->SourceSubsidyID()); + Money profit = DeliverGoods(count, this->ct, this->current_station, cp->GetSourceXY(), cp->GetPeriodsInTransit(), this->owner, cp->GetSourceType(), cp->GetSourceID()); - profit -= cp->FeederShare(count); + profit -= cp->GetFeederShare(count); /* For Infrastructure patch. Handling transfers between other companies */ this->route_profit += profit; @@ -1482,12 +1482,12 @@ void CargoPayment::PayFinalDelivery(CargoPacket *cp, uint count) */ Money CargoPayment::PayTransfer(CargoPacket *cp, uint count) { - Money profit = -cp->FeederShare(count) + GetTransportedGoodsIncome( + Money profit = -cp->GetFeederShare(count) + GetTransportedGoodsIncome( count, /* pay transfer vehicle the difference between the payment for the journey from * the source to the current point, and the sum of the previous transfer payments */ - DistanceManhattan(cp->SourceStationXY(), Station::Get(this->current_station)->xy), - cp->DaysInTransit(), + DistanceManhattan(cp->GetSourceXY(), Station::Get(this->current_station)->xy), + cp->GetPeriodsInTransit(), this->ct); profit = profit * _settings_game.economy.feeder_payment_share / 100; diff --git a/src/economy_func.h b/src/economy_func.h index b6dfd65b3b..ff2bc83d31 100644 --- a/src/economy_func.h +++ b/src/economy_func.h @@ -28,7 +28,7 @@ extern Prices _price; int UpdateCompanyRatingAndValue(Company *c, bool update); void StartupIndustryDailyChanges(bool init_counter); -Money GetTransportedGoodsIncome(uint num_pieces, uint dist, uint16 transit_days, CargoID cargo_type); +Money GetTransportedGoodsIncome(uint num_pieces, uint dist, uint16 transit_periods, CargoID cargo_type); uint MoveGoodsToStation(CargoID type, uint amount, SourceType source_type, SourceID source_id, const StationList *all_stations, Owner exclusivity = INVALID_OWNER); void PrepareUnload(Vehicle *front_v); diff --git a/src/newgrf.cpp b/src/newgrf.cpp index b62895ac4f..a746b78c78 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -3062,11 +3062,11 @@ static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, const G break; case 0x10: // Used for payment calculation - cs->transit_days[0] = buf->ReadByte(); + cs->transit_periods[0] = buf->ReadByte(); break; case 0x11: // Used for payment calculation - cs->transit_days[1] = buf->ReadByte(); + cs->transit_periods[1] = buf->ReadByte(); break; case 0x12: // Base cargo price diff --git a/src/newgrf_engine.cpp b/src/newgrf_engine.cpp index e7f20463d8..001af9f225 100644 --- a/src/newgrf_engine.cpp +++ b/src/newgrf_engine.cpp @@ -983,8 +983,8 @@ static uint32 VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *object, case 0x3B: return GB(v->cargo_cap, 8, 8); case 0x3C: return ClampTo(v->cargo.StoredCount()); case 0x3D: return GB(ClampTo(v->cargo.StoredCount()), 8, 8); - case 0x3E: return v->cargo.Source(); - case 0x3F: return ClampTo(v->cargo.DaysInTransit()); + case 0x3E: return v->cargo.GetFirstStation(); + case 0x3F: return ClampTo(v->cargo.PeriodsInTransit()); case 0x40: return ClampTo(v->age); case 0x41: return GB(ClampTo(v->age), 8, 8); case 0x42: return ClampTo(v->max_age); diff --git a/src/newgrf_station.cpp b/src/newgrf_station.cpp index 9aac6b2959..fb1bfa2538 100644 --- a/src/newgrf_station.cpp +++ b/src/newgrf_station.cpp @@ -452,7 +452,7 @@ uint32 Station::GetNewGRFVariable(const ResolverObject &object, uint16 variable, case 0x60: return std::min(ge->CargoTotalCount(), 4095); case 0x61: return ge->HasVehicleEverTriedLoading() && ge->IsSupplyAllowed() ? ge->time_since_pickup : 0; case 0x62: return ge->HasRating() ? ge->rating : 0xFFFFFFFF; - case 0x63: return ge->data != nullptr ? ge->data->cargo.DaysInTransit() : 0; + case 0x63: return ge->data != nullptr ? ge->data->cargo.PeriodsInTransit() : 0; case 0x64: return ge->HasVehicleEverTriedLoading() && ge->IsSupplyAllowed() ? ge->last_speed | (ge->last_age << 8) : 0xFF00; case 0x65: return GB(ge->status, GoodsEntry::GES_ACCEPTANCE, 1) << 3; case 0x69: { @@ -472,8 +472,8 @@ uint32 Station::GetNewGRFVariable(const ResolverObject &object, uint16 variable, case 1: return GB(std::min(g->CargoTotalCount(), 4095u), 0, 4) | (GB(g->status, GoodsEntry::GES_ACCEPTANCE, 1) << 7); case 2: return g->time_since_pickup; case 3: return g->rating; - case 4: return g->data != nullptr ? g->data->cargo.Source() : INVALID_STATION; - case 5: return g->data != nullptr ? g->data->cargo.DaysInTransit() : 0; + case 4: return g->data != nullptr ? g->data->cargo.GetFirstStation() : INVALID_STATION; + case 5: return g->data != nullptr ? g->data->cargo.PeriodsInTransit() : 0; case 6: return g->last_speed; case 7: return g->last_age; } diff --git a/src/openttd.cpp b/src/openttd.cpp index 413d89ce7d..202a65ad5d 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -1898,21 +1898,21 @@ void CheckCaches(bool force_check, std::function log, CheckC /* Check whether the caches are still valid */ for (Vehicle *v : Vehicle::Iterate()) { - Money old_feeder_share = v->cargo.FeederShare(); + Money old_feeder_share = v->cargo.GetFeederShare(); uint old_count = v->cargo.TotalCount(); - uint64 old_cargo_days_in_transit = v->cargo.CargoDaysInTransit(); + uint64 old_cargo_periods_in_transit = v->cargo.CargoPeriodsInTransit(); v->cargo.InvalidateCache(); uint changed = 0; - if (v->cargo.FeederShare() != old_feeder_share) SetBit(changed, 0); + if (v->cargo.GetFeederShare() != old_feeder_share) SetBit(changed, 0); if (v->cargo.TotalCount() != old_count) SetBit(changed, 1); - if (v->cargo.CargoDaysInTransit() != old_cargo_days_in_transit) SetBit(changed, 2); + if (v->cargo.CargoPeriodsInTransit() != old_cargo_periods_in_transit) SetBit(changed, 2); if (changed != 0) { CCLOGV1("vehicle cargo cache mismatch: %c%c%c", HasBit(changed, 0) ? 'f' : '-', HasBit(changed, 1) ? 't' : '-', - HasBit(changed, 2) ? 'd' : '-'); + HasBit(changed, 2) ? 'p' : '-'); } } @@ -1921,13 +1921,13 @@ void CheckCaches(bool force_check, std::function log, CheckC if (st->goods[c].data == nullptr) continue; uint old_count = st->goods[c].data->cargo.TotalCount(); - uint64 old_cargo_days_in_transit = st->goods[c].data->cargo.CargoDaysInTransit(); + uint64 old_cargo_periods_in_transit = st->goods[c].data->cargo.CargoPeriodsInTransit(); st->goods[c].data->cargo.InvalidateCache(); uint changed = 0; if (st->goods[c].data->cargo.TotalCount() != old_count) SetBit(changed, 0); - if (st->goods[c].data->cargo.CargoDaysInTransit() != old_cargo_days_in_transit) SetBit(changed, 1); + if (st->goods[c].data->cargo.CargoPeriodsInTransit() != old_cargo_periods_in_transit) SetBit(changed, 1); if (changed != 0) { CCLOG("station cargo cache mismatch: station %i, company %i, cargo %u: %c%c", st->index, (int)st->owner, c, diff --git a/src/roadveh_gui.cpp b/src/roadveh_gui.cpp index 16ef743d47..209b919e3a 100644 --- a/src/roadveh_gui.cpp +++ b/src/roadveh_gui.cpp @@ -81,9 +81,9 @@ void DrawRoadVehDetails(const Vehicle *v, const Rect &r) if (u->cargo.StoredCount() > 0) { SetDParam(0, u->cargo_type); SetDParam(1, u->cargo.StoredCount()); - SetDParam(2, u->cargo.Source()); + SetDParam(2, u->cargo.GetFirstStation()); str = STR_VEHICLE_DETAILS_CARGO_FROM; - feeder_share += u->cargo.FeederShare(); + feeder_share += u->cargo.GetFeederShare(); } DrawString(r.left, r.right, y, str); y += FONT_HEIGHT_NORMAL; @@ -100,9 +100,9 @@ void DrawRoadVehDetails(const Vehicle *v, const Rect &r) if (v->cargo.StoredCount() > 0) { SetDParam(0, v->cargo_type); SetDParam(1, v->cargo.StoredCount()); - SetDParam(2, v->cargo.Source()); + SetDParam(2, v->cargo.GetFirstStation()); str = STR_VEHICLE_DETAILS_CARGO_FROM; - feeder_share += v->cargo.FeederShare(); + feeder_share += v->cargo.GetFeederShare(); } DrawString(r.left, r.right, y, str); y += FONT_HEIGHT_NORMAL + WidgetDimensions::scaled.vsep_normal; diff --git a/src/saveload/cargopacket_sl.cpp b/src/saveload/cargopacket_sl.cpp index 3c60e6ae0a..a027ec04be 100644 --- a/src/saveload/cargopacket_sl.cpp +++ b/src/saveload/cargopacket_sl.cpp @@ -27,12 +27,12 @@ namespace upstream_sl { SaveLoadTable GetCargoPacketDesc() { static const SaveLoad _cargopacket_desc[] = { - SLE_VAR(CargoPacket, source, SLE_UINT16), + SLE_VARNAME(CargoPacket, first_station, "source", SLE_UINT16), SLE_VAR(CargoPacket, source_xy, SLE_UINT32), SLE_VAR(CargoPacket, count, SLE_UINT16), - SLE_CONDVAR(CargoPacket, days_in_transit, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_MORE_CARGO_AGE), - SLE_CONDVAR(CargoPacket, days_in_transit, SLE_UINT16, SLV_MORE_CARGO_AGE, SLV_PERIODS_IN_TRANSIT_RENAME), - SLE_CONDVARNAME(CargoPacket, days_in_transit, "periods_in_transit", SLE_UINT16, SLV_PERIODS_IN_TRANSIT_RENAME, SL_MAX_VERSION), + SLE_CONDVARNAME(CargoPacket, periods_in_transit, "days_in_transit", SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_MORE_CARGO_AGE), + SLE_CONDVARNAME(CargoPacket, periods_in_transit, "days_in_transit", SLE_UINT16, SLV_MORE_CARGO_AGE, SLV_PERIODS_IN_TRANSIT_RENAME), + SLE_CONDVAR(CargoPacket, periods_in_transit, SLE_UINT16, SLV_PERIODS_IN_TRANSIT_RENAME, SL_MAX_VERSION), SLE_VAR(CargoPacket, feeder_share, SLE_INT64), SLE_CONDVAR(CargoPacket, source_type, SLE_UINT8, SLV_125, SL_MAX_VERSION), SLE_CONDVAR(CargoPacket, source_id, SLE_UINT16, SLV_125, SL_MAX_VERSION), diff --git a/src/saveload/saveload.h b/src/saveload/saveload.h index cb8a3d8b9d..221c62fab5 100644 --- a/src/saveload/saveload.h +++ b/src/saveload/saveload.h @@ -455,6 +455,15 @@ struct SaveLoadCompat { #define SLE_VAR(base, variable, type) SLE_CONDVAR(base, variable, type, SL_MIN_VERSION, SL_MAX_VERSION) #define SLE_VAR2(base, name, variable, type) SLE_CONDVARNAME(base, variable, name, type, SL_MIN_VERSION, SL_MAX_VERSION) +/** + * Storage of a variable in every version of a savegame. + * @param base Name of the class or struct containing the variable. + * @param variable Name of the variable in the class or struct referenced by \a base. + * @param name Field name for table chunks. + * @param type Storage of the data in memory and in the savegame. + */ +#define SLE_VARNAME(base, variable, name, type) SLE_CONDVARNAME(base, variable, name, type, SL_MIN_VERSION, SL_MAX_VERSION) + /** * Storage of a reference in every version of a savegame. * @param base Name of the class or struct containing the variable. diff --git a/src/saveload/station_sl.cpp b/src/saveload/station_sl.cpp index a92f277b0e..1a0c975a12 100644 --- a/src/saveload/station_sl.cpp +++ b/src/saveload/station_sl.cpp @@ -35,7 +35,7 @@ static uint16 _waiting_acceptance; static uint32 _old_num_flows; static uint16 _cargo_source; static uint32 _cargo_source_xy; -static uint8 _cargo_days; +static uint8 _cargo_periods; static Money _cargo_feeder_share; CargoPacketList _packets; @@ -223,7 +223,7 @@ public: SLEG_CONDVAR("cargo_source", _cargo_source, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_7), SLEG_CONDVAR("cargo_source", _cargo_source, SLE_UINT16, SLV_7, SLV_68), SLEG_CONDVAR("cargo_source_xy", _cargo_source_xy, SLE_UINT32, SLV_44, SLV_68), - SLEG_CONDVAR("cargo_days", _cargo_days, SLE_UINT8, SL_MIN_VERSION, SLV_68), + SLEG_CONDVAR("cargo_days", _cargo_periods, SLE_UINT8, SL_MIN_VERSION, SLV_68), SLE_VAR(GoodsEntry, last_speed, SLE_UINT8), SLE_VAR(GoodsEntry, last_age, SLE_UINT8), SLEG_CONDVAR("cargo_feeder_share", _cargo_feeder_share, SLE_FILE_U32 | SLE_VAR_I64, SLV_14, SLV_65), @@ -305,7 +305,7 @@ public: assert(CargoPacket::CanAllocateItem()); /* Don't construct the packet with station here, because that'll fail with old savegames */ - CargoPacket *cp = new CargoPacket(GB(_waiting_acceptance, 0, 12), _cargo_days, source, _cargo_source_xy, _cargo_feeder_share); + CargoPacket *cp = new CargoPacket(GB(_waiting_acceptance, 0, 12), _cargo_periods, source, _cargo_source_xy, _cargo_feeder_share); ge->data->cargo.Append(cp, INVALID_STATION); SB(ge->status, GoodsEntry::GES_RATING, 1, 1); } diff --git a/src/saveload/vehicle_sl.cpp b/src/saveload/vehicle_sl.cpp index 166a6aace7..a462032512 100644 --- a/src/saveload/vehicle_sl.cpp +++ b/src/saveload/vehicle_sl.cpp @@ -38,7 +38,7 @@ static std::vector _path_tile; namespace upstream_sl { -static uint8 _cargo_days; +static uint8 _cargo_periods; static uint16 _cargo_source; static uint32 _cargo_source_xy; static uint16 _cargo_count; @@ -94,7 +94,7 @@ public: SLE_VAR(Vehicle, cargo_type, SLE_UINT8), SLE_CONDVAR(Vehicle, cargo_subtype, SLE_UINT8, SLV_35, SL_MAX_VERSION), - SLEG_CONDVAR("cargo_days", _cargo_days, SLE_UINT8, SL_MIN_VERSION, SLV_68), + SLEG_CONDVAR("cargo_days", _cargo_periods, SLE_UINT8, SL_MIN_VERSION, SLV_68), SLEG_CONDVAR("cargo_source", _cargo_source, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_7), SLEG_CONDVAR("cargo_source", _cargo_source, SLE_UINT16, SLV_7, SLV_68), SLEG_CONDVAR("cargo_source_xy", _cargo_source_xy, SLE_UINT32, SLV_44, SLV_68), @@ -533,7 +533,7 @@ struct VEHSChunkHandler : ChunkHandler { if (_cargo_count != 0 && IsCompanyBuildableVehicleType(v) && CargoPacket::CanAllocateItem()) { /* Don't construct the packet with station here, because that'll fail with old savegames */ - CargoPacket *cp = new CargoPacket(_cargo_count, _cargo_days, _cargo_source, _cargo_source_xy, _cargo_feeder_share); + CargoPacket *cp = new CargoPacket(_cargo_count, _cargo_periods, _cargo_source, _cargo_source_xy, _cargo_feeder_share); v->cargo.Append(cp); } diff --git a/src/script/api/script_station.cpp b/src/script/api/script_station.cpp index cce7ada021..d155b5ea10 100644 --- a/src/script/api/script_station.cpp +++ b/src/script/api/script_station.cpp @@ -71,7 +71,7 @@ template StationCargoList::ConstIterator(cargo_list.Packets()->end())); for (StationCargoList::ConstIterator it = range.first; it != range.second; it++) { const CargoPacket *cp = *it; - if (!Tfrom || cp->SourceStation() == from_station_id) cargo_count += cp->Count(); + if (!Tfrom || cp->GetFirstStation() == from_station_id) cargo_count += cp->Count(); } return cargo_count; diff --git a/src/script/api/script_stationlist.cpp b/src/script/api/script_stationlist.cpp index 7151e7c117..ffaff959da 100644 --- a/src/script/api/script_stationlist.cpp +++ b/src/script/api/script_stationlist.cpp @@ -177,7 +177,7 @@ void ScriptStationList_CargoWaiting::Add(StationID station_id, CargoID cargo, St StationCargoList::ConstIterator iter = ge->data->cargo.Packets()->begin(); StationCargoList::ConstIterator end = ge->data->cargo.Packets()->end(); for (; iter != end; ++iter) { - collector.Update((*iter)->SourceStation(), iter.GetKey(), (*iter)->Count()); + collector.Update((*iter)->GetFirstStation(), iter.GetKey(), (*iter)->Count()); } } @@ -221,7 +221,7 @@ ScriptStationList_CargoWaitingViaByFrom::ScriptStationList_CargoWaitingViaByFrom std::pair range = ge->data->cargo.Packets()->equal_range(via); for (StationCargoList::ConstIterator iter = range.first; iter != range.second; ++iter) { - collector.Update((*iter)->SourceStation(), iter.GetKey(), (*iter)->Count()); + collector.Update((*iter)->GetFirstStation(), iter.GetKey(), (*iter)->Count()); } } diff --git a/src/ship_gui.cpp b/src/ship_gui.cpp index 0ab16e6eb3..684ead274d 100644 --- a/src/ship_gui.cpp +++ b/src/ship_gui.cpp @@ -119,9 +119,9 @@ void DrawShipDetails(const Vehicle *v, const Rect &r) if (u->cargo.StoredCount() > 0) { SetDParam(0, u->cargo_type); SetDParam(1, u->cargo.StoredCount()); - SetDParam(2, u->cargo.Source()); + SetDParam(2, u->cargo.GetFirstStation()); str = STR_VEHICLE_DETAILS_CARGO_FROM; - feeder_share += u->cargo.FeederShare(); + feeder_share += u->cargo.GetFeederShare(); } DrawString(r.left, r.right, y, str); y += FONT_HEIGHT_NORMAL; @@ -138,9 +138,9 @@ void DrawShipDetails(const Vehicle *v, const Rect &r) if (v->cargo.StoredCount() > 0) { SetDParam(0, v->cargo_type); SetDParam(1, v->cargo.StoredCount()); - SetDParam(2, v->cargo.Source()); + SetDParam(2, v->cargo.GetFirstStation()); str = STR_VEHICLE_DETAILS_CARGO_FROM; - feeder_share += v->cargo.FeederShare(); + feeder_share += v->cargo.GetFeederShare(); } DrawString(r.left, r.right, y, str); y += FONT_HEIGHT_NORMAL + WidgetDimensions::scaled.vsep_normal; diff --git a/src/sl/cargopacket_sl.cpp b/src/sl/cargopacket_sl.cpp index 6424371f08..e5e62b3cb9 100644 --- a/src/sl/cargopacket_sl.cpp +++ b/src/sl/cargopacket_sl.cpp @@ -26,22 +26,22 @@ extern btree::btree_map _cargo_packet_deferred_payments; { if (IsSavegameVersionBefore(SLV_44)) { /* If we remove a station while cargo from it is still en route, payment calculation will assume - * 0, 0 to be the source of the cargo, resulting in very high payments usually. v->source_xy + * 0, 0 to be the first_station of the cargo, resulting in very high payments usually. v->source_xy * stores the coordinates, preserving them even if the station is removed. However, if a game is loaded - * where this situation exists, the cargo-source information is lost. in this case, we set the source + * where this situation exists, the cargo-first_station information is lost. in this case, we set the first_station * to the current tile of the vehicle to prevent excessive profits */ for (const Vehicle *v : Vehicle::Iterate()) { const CargoPacketList *packets = v->cargo.Packets(); for (VehicleCargoList::ConstIterator it(packets->begin()); it != packets->end(); it++) { CargoPacket *cp = *it; - cp->source_xy = Station::IsValidID(cp->source) ? Station::Get(cp->source)->xy : v->tile; + cp->source_xy = Station::IsValidID(cp->first_station) ? Station::Get(cp->first_station)->xy : v->tile; } } /* Store position of the station where the goods come from, so there * are no very high payments when stations get removed. However, if the - * station where the goods came from is already removed, the source + * station where the goods came from is already removed, the first_station * information is lost. In that case we set it to the position of this * station */ for (Station *st : Station::Iterate()) { @@ -52,16 +52,16 @@ extern btree::btree_map _cargo_packet_deferred_payments; const StationCargoPacketMap *packets = ge->data->cargo.Packets(); for (StationCargoList::ConstIterator it(packets->begin()); it != packets->end(); it++) { CargoPacket *cp = *it; - cp->source_xy = Station::IsValidID(cp->source) ? Station::Get(cp->source)->xy : st->xy; + cp->source_xy = Station::IsValidID(cp->first_station) ? Station::Get(cp->first_station)->xy : st->xy; } } } } if (IsSavegameVersionBefore(SLV_120)) { - /* CargoPacket's source should be either INVALID_STATION or a valid station */ + /* CargoPacket's first_station should be either INVALID_STATION or a valid station */ for (CargoPacket *cp : CargoPacket::Iterate()) { - if (!Station::IsValidID(cp->source)) cp->source = INVALID_STATION; + if (!Station::IsValidID(cp->first_station)) cp->first_station = INVALID_STATION; } } @@ -112,12 +112,12 @@ extern btree::btree_map _cargo_packet_deferred_payments; SaveLoadTable GetCargoPacketDesc() { static const SaveLoad _cargopacket_desc[] = { - SLE_VAR(CargoPacket, source, SLE_UINT16), + SLE_VAR(CargoPacket, first_station, SLE_UINT16), SLE_VAR(CargoPacket, source_xy, SLE_UINT32), SLE_VAR(CargoPacket, next_station, SLE_FILE_U32 | SLE_VAR_U16), SLE_VAR(CargoPacket, count, SLE_UINT16), - SLE_CONDVAR_X(CargoPacket, days_in_transit, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_MORE_CARGO_AGE, 0, 0)), - SLE_CONDVAR_X(CargoPacket, days_in_transit, SLE_UINT16, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_MORE_CARGO_AGE)), + SLE_CONDVAR_X(CargoPacket, periods_in_transit, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_MORE_CARGO_AGE, 0, 0)), + SLE_CONDVAR_X(CargoPacket, periods_in_transit, SLE_UINT16, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_MORE_CARGO_AGE)), SLE_VAR(CargoPacket, feeder_share, SLE_INT64), SLE_CONDVAR(CargoPacket, source_type, SLE_UINT8, SLV_125, SL_MAX_VERSION), SLE_CONDVAR(CargoPacket, source_id, SLE_UINT16, SLV_125, SL_MAX_VERSION), diff --git a/src/sl/oldloader_sl.cpp b/src/sl/oldloader_sl.cpp index 8e2d817e64..e7b1d2cdc7 100644 --- a/src/sl/oldloader_sl.cpp +++ b/src/sl/oldloader_sl.cpp @@ -679,14 +679,14 @@ static bool LoadOldDepot(LoadgameState *ls, int num) static StationID _current_station_id; static uint16 _waiting_acceptance; static uint8 _cargo_source; -static uint8 _cargo_days; +static uint8 _cargo_periods; static const OldChunks goods_chunk[] = { OCL_VAR ( OC_UINT16, 1, &_waiting_acceptance ), OCL_SVAR( OC_UINT8, GoodsEntry, time_since_pickup ), OCL_SVAR( OC_UINT8, GoodsEntry, rating ), OCL_VAR ( OC_UINT8, 1, &_cargo_source ), - OCL_VAR ( OC_UINT8, 1, &_cargo_days ), + OCL_VAR ( OC_UINT8, 1, &_cargo_periods ), OCL_SVAR( OC_UINT8, GoodsEntry, last_speed ), OCL_SVAR( OC_UINT8, GoodsEntry, last_age ), @@ -706,7 +706,7 @@ static bool LoadOldGood(LoadgameState *ls, int num) SB(ge->status, GoodsEntry::GES_ACCEPTANCE, 1, HasBit(_waiting_acceptance, 15)); SB(ge->status, GoodsEntry::GES_RATING, 1, _cargo_source != 0xFF); if (GB(_waiting_acceptance, 0, 12) != 0 && CargoPacket::CanAllocateItem()) { - ge->CreateData().cargo.Append(new CargoPacket(GB(_waiting_acceptance, 0, 12), _cargo_days, (_cargo_source == 0xFF) ? INVALID_STATION : _cargo_source, 0, 0), + ge->CreateData().cargo.Append(new CargoPacket(GB(_waiting_acceptance, 0, 12), _cargo_periods, (_cargo_source == 0xFF) ? INVALID_STATION : _cargo_source, 0, 0), INVALID_STATION); } @@ -1172,7 +1172,7 @@ static const OldChunks vehicle_chunk[] = { OCL_VAR ( OC_TTD | OC_UINT16, 1, &_cargo_count ), OCL_VAR ( OC_TTO | OC_FILE_U8 | OC_VAR_U16, 1, &_cargo_count ), OCL_VAR ( OC_UINT8, 1, &_cargo_source ), - OCL_VAR ( OC_UINT8, 1, &_cargo_days ), + OCL_VAR ( OC_UINT8, 1, &_cargo_periods ), OCL_SVAR( OC_TTO | OC_UINT8, Vehicle, tick_counter ), @@ -1353,7 +1353,7 @@ bool LoadOldVehicle(LoadgameState *ls, int num) if (_cargo_count != 0 && CargoPacket::CanAllocateItem()) { StationID source = (_cargo_source == 0xFF) ? INVALID_STATION : _cargo_source; TileIndex source_xy = (source != INVALID_STATION) ? Station::Get(source)->xy : 0; - v->cargo.Append(new CargoPacket(_cargo_count, _cargo_days, source, source_xy)); + v->cargo.Append(new CargoPacket(_cargo_count, _cargo_periods, source, source_xy)); } } diff --git a/src/sl/station_sl.cpp b/src/sl/station_sl.cpp index ddd93a4f6e..51a439bf95 100644 --- a/src/sl/station_sl.cpp +++ b/src/sl/station_sl.cpp @@ -235,7 +235,7 @@ static uint16 _waiting_acceptance; static uint32 _num_flows; static uint16 _cargo_source; static uint32 _cargo_source_xy; -static uint8 _cargo_days; +static uint8 _cargo_periods; static Money _cargo_feeder_share; static uint _cargo_reserved_count; @@ -288,7 +288,7 @@ SaveLoadTable GetGoodsDesc() SLEG_CONDVAR( _cargo_source, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_7), SLEG_CONDVAR( _cargo_source, SLE_UINT16, SLV_7, SLV_68), SLEG_CONDVAR( _cargo_source_xy, SLE_UINT32, SLV_44, SLV_68), - SLEG_CONDVAR( _cargo_days, SLE_UINT8, SL_MIN_VERSION, SLV_68), + SLEG_CONDVAR( _cargo_periods, SLE_UINT8, SL_MIN_VERSION, SLV_68), SLE_VAR(GoodsEntry, last_speed, SLE_UINT8), SLE_VAR(GoodsEntry, last_age, SLE_UINT8), SLEG_CONDVAR( _cargo_feeder_share, SLE_FILE_U32 | SLE_VAR_I64, SLV_14, SLV_65), @@ -342,7 +342,7 @@ static void SwapPackets(GoodsEntry *ge) static void Load_STNS() { _cargo_source_xy = 0; - _cargo_days = 0; + _cargo_periods = 0; _cargo_feeder_share = 0; _num_specs = 0; _cargo_reserved_count = 0; @@ -374,7 +374,7 @@ static void Load_STNS() assert(CargoPacket::CanAllocateItem()); /* Don't construct the packet with station here, because that'll fail with old savegames */ - CargoPacket *cp = new CargoPacket(GB(_waiting_acceptance, 0, 12), _cargo_days, source, _cargo_source_xy, _cargo_feeder_share); + CargoPacket *cp = new CargoPacket(GB(_waiting_acceptance, 0, 12), _cargo_periods, source, _cargo_source_xy, _cargo_feeder_share); ge->CreateData().cargo.Append(cp, INVALID_STATION); SB(ge->status, GoodsEntry::GES_RATING, 1, 1); } diff --git a/src/sl/vehicle_sl.cpp b/src/sl/vehicle_sl.cpp index 294ac9b7cf..31878ab98c 100644 --- a/src/sl/vehicle_sl.cpp +++ b/src/sl/vehicle_sl.cpp @@ -635,7 +635,7 @@ void FixupTrainLengths() } } -static uint8 _cargo_days; +static uint8 _cargo_periods; static uint16 _cargo_source; static uint32 _cargo_source_xy; static uint16 _cargo_count; @@ -698,7 +698,7 @@ SaveLoadTable GetVehicleDescription(VehicleType vt) SLE_VAR(Vehicle, cargo_type, SLE_UINT8), SLE_CONDVAR(Vehicle, cargo_subtype, SLE_UINT8, SLV_35, SL_MAX_VERSION), - SLEG_CONDVAR( _cargo_days, SLE_UINT8, SL_MIN_VERSION, SLV_68), + SLEG_CONDVAR( _cargo_periods, SLE_UINT8, SL_MIN_VERSION, SLV_68), SLEG_CONDVAR( _cargo_source, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_7), SLEG_CONDVAR( _cargo_source, SLE_UINT16, SLV_7, SLV_68), SLEG_CONDVAR( _cargo_source_xy, SLE_UINT32, SLV_44, SLV_68), @@ -1095,7 +1095,7 @@ void Load_VEHS() if (_cargo_count != 0 && IsCompanyBuildableVehicleType(v) && CargoPacket::CanAllocateItem()) { /* Don't construct the packet with station here, because that'll fail with old savegames */ - CargoPacket *cp = new CargoPacket(_cargo_count, _cargo_days, _cargo_source, _cargo_source_xy, _cargo_feeder_share); + CargoPacket *cp = new CargoPacket(_cargo_count, _cargo_periods, _cargo_source, _cargo_source_xy, _cargo_feeder_share); v->cargo.Append(cp); } diff --git a/src/station_gui.cpp b/src/station_gui.cpp index c875ce13ba..7303c699a5 100644 --- a/src/station_gui.cpp +++ b/src/station_gui.cpp @@ -1766,15 +1766,15 @@ struct StationViewWindow : public Window { const CargoPacket *cp = *it; StationID next = it.GetKey(); - const CargoDataEntry *source_entry = source_dest->Retrieve(cp->SourceStation()); + const CargoDataEntry *source_entry = source_dest->Retrieve(cp->GetFirstStation()); if (source_entry == nullptr) { - this->ShowCargo(cargo, i, cp->SourceStation(), next, INVALID_STATION, cp->Count()); + this->ShowCargo(cargo, i, cp->GetFirstStation(), next, INVALID_STATION, cp->Count()); continue; } const CargoDataEntry *via_entry = source_entry->Retrieve(next); if (via_entry == nullptr) { - this->ShowCargo(cargo, i, cp->SourceStation(), next, INVALID_STATION, cp->Count()); + this->ShowCargo(cargo, i, cp->GetFirstStation(), next, INVALID_STATION, cp->Count()); continue; } @@ -1795,7 +1795,7 @@ struct StationViewWindow : public Window { val = std::min(remaining, DivideApprox(cp->Count() * dest_entry->GetCount(), via_entry->GetCount())); remaining -= val; } - this->ShowCargo(cargo, i, cp->SourceStation(), next, dest_entry->GetStation(), val); + this->ShowCargo(cargo, i, cp->GetFirstStation(), next, dest_entry->GetStation(), val); } } this->ShowCargo(cargo, i, NEW_STATION, NEW_STATION, NEW_STATION, packets.ReservedCount()); diff --git a/src/table/cargo_const.h b/src/table/cargo_const.h index 8fffc8e804..51e6818b1d 100644 --- a/src/table/cargo_const.h +++ b/src/table/cargo_const.h @@ -33,8 +33,8 @@ * @param weight Weight of a single unit of this cargo type in 1/16 ton (62.5 kg). * @param mult Capacity multiplier for vehicles. (8 fractional bits). * @param ip CargoSpec->initial_payment. - * @param td1 CargoSpec->transit_days[0]. - * @param td2 CargoSpec->transit_days[1]. + * @param td1 CargoSpec->transit_periods[0]. + * @param td2 CargoSpec->transit_periods[1]. * @param freight Cargo type is considered to be freight (affects train freight multiplier). * @param te The effect that delivering this cargo type has on towns. Also affects destination of subsidies. * @param str_plural The name suffix used to populate CargoSpec->name, CargoSpec->quantifier, diff --git a/src/table/newgrf_debug_data.h b/src/table/newgrf_debug_data.h index 9935c9b43f..9aa66380b6 100644 --- a/src/table/newgrf_debug_data.h +++ b/src/table/newgrf_debug_data.h @@ -1286,8 +1286,8 @@ class NIHCargo : public NIHelper { seprintf(buffer, lastof(buffer), " Weight: %u, Capacity multiplier: %u", spec->weight, spec->multiplier); output.print(buffer); - seprintf(buffer, lastof(buffer), " Initial payment: %d, Current payment: " OTTD_PRINTF64 ", Transit days: (%u, %u)", - spec->initial_payment, (int64)spec->current_payment, spec->transit_days[0], spec->transit_days[1]); + seprintf(buffer, lastof(buffer), " Initial payment: %d, Current payment: " OTTD_PRINTF64 ", Transit periods: (%u, %u)", + spec->initial_payment, (int64)spec->current_payment, spec->transit_periods[0], spec->transit_periods[1]); output.print(buffer); seprintf(buffer, lastof(buffer), " Freight: %s, Town effect: %u", spec->is_freight ? "yes" : "no", spec->town_effect); output.print(buffer); diff --git a/src/train_gui.cpp b/src/train_gui.cpp index 61d5779c2e..8893cbcbf0 100644 --- a/src/train_gui.cpp +++ b/src/train_gui.cpp @@ -349,7 +349,7 @@ static void GetCargoSummaryOfArticulatedVehicle(const Train *v, CargoSummary *su item->capacity += v->cargo_cap; item->amount += v->cargo.StoredCount(); - if (item->source == INVALID_STATION) item->source = v->cargo.Source(); + if (item->source == INVALID_STATION) item->source = v->cargo.GetFirstStation(); } while ((v = v->Next()) != nullptr && v->IsArticulatedPart()); } @@ -515,7 +515,7 @@ void DrawTrainDetails(const Train *v, const Rect &r, int vscroll_pos, uint16 vsc const auto weight_without_cargo = train->GetWeightWithoutCargo(); act_cargo[u->cargo_type] += u->cargo.StoredCount(); max_cargo[u->cargo_type] += u->cargo_cap; - feeder_share += u->cargo.FeederShare(); + feeder_share += u->cargo.GetFeederShare(); empty_weight += weight_without_cargo; loaded_weight += weight_without_cargo + train->GetCargoWeight(train->cargo_cap); } @@ -565,7 +565,7 @@ void DrawTrainDetails(const Train *v, const Rect &r, int vscroll_pos, uint16 vsc for (const Vehicle *u = v; u != nullptr; u = u->Next()) { act_cargo[u->cargo_type] += u->cargo.StoredCount(); max_cargo[u->cargo_type] += u->cargo_cap; - feeder_share += u->cargo.FeederShare(); + feeder_share += u->cargo.GetFeederShare(); } if (--vscroll_pos < 0 && vscroll_pos >= -vscroll_cap) {