diff --git a/src/cargopacket.cpp b/src/cargopacket.cpp index fe60a3b97a..c9ec6b4510 100644 --- a/src/cargopacket.cpp +++ b/src/cargopacket.cpp @@ -745,7 +745,7 @@ void VehicleCargoList::InvalidateCache() * @return Amount of cargo actually reassigned. */ template -uint VehicleCargoList::Reassign(uint max_move, TileOrStationID) +uint VehicleCargoList::Reassign(uint max_move, StationID) { static_assert(Tfrom != MTA_TRANSFER && Tto != MTA_TRANSFER); static_assert(Tfrom - Tto == 1 || Tto - Tfrom == 1); @@ -763,7 +763,7 @@ uint VehicleCargoList::Reassign(uint max_move, TileOrStationID) * @return Amount of cargo actually reassigned. */ template<> -uint VehicleCargoList::Reassign(uint max_move, TileOrStationID next_station) +uint VehicleCargoList::Reassign(uint max_move, StationID next_station) { max_move = std::min(this->action_counts[MTA_DELIVER], max_move); @@ -1161,4 +1161,4 @@ uint StationCargoList::RerouteFromSource(uint max_move, StationCargoList *dest, */ template class CargoList; template class CargoList; -template uint VehicleCargoList::Reassign(uint, TileOrStationID); +template uint VehicleCargoList::Reassign(uint, StationID); diff --git a/src/cargopacket.h b/src/cargopacket.h index c697c6ee0f..bae3618268 100644 --- a/src/cargopacket.h +++ b/src/cargopacket.h @@ -43,11 +43,16 @@ namespace upstream_sl { class SlStationGoods; } -typedef uint32 TileOrStationID; - void ClearCargoPacketDeferredPayments(); void ChangeOwnershipOfCargoPacketDeferredPayments(Owner old_owner, Owner new_owner); +/** + * To make alignment in the union in CargoPacket a bit easier, create a new type + * that is a StationID, but stored as 32bit. + */ +typedef uint32_t StationID_32bit; +static_assert(sizeof(TileIndex) == sizeof(StationID_32bit)); + /** * Container for cargo from the same location and time. */ @@ -59,8 +64,8 @@ private: SourceID source_id; ///< Index of source, INVALID_SOURCE if unknown/invalid. TileIndex source_xy; ///< The origin of the cargo (first station in feeder chain). union { - TileOrStationID loaded_at_xy; ///< Location where this cargo has been loaded into the vehicle. - TileOrStationID next_station; ///< Station where the cargo wants to go next. + TileIndex loaded_at_xy; ///< Location where this cargo has been loaded into the vehicle. + StationID_32bit next_station; ///< Station where the cargo wants to go next. }; StationID source; ///< The station where the cargo came from first. SourceType source_type; ///< Type of \c source_id. @@ -467,7 +472,7 @@ public: * applicable), return value is amount of cargo actually moved. */ template - uint Reassign(uint max_move, TileOrStationID update = INVALID_TILE); + uint Reassign(uint max_move, StationID update = INVALID_STATION); uint Return(uint max_move, StationCargoList *dest, StationID next_station); uint Unload(uint max_move, StationCargoList *dest, CargoPayment *payment); uint Shift(uint max_move, VehicleCargoList *dest);