diff --git a/src/cargopacket.cpp b/src/cargopacket.cpp index b9d88ac7bc..d921960bb0 100644 --- a/src/cargopacket.cpp +++ b/src/cargopacket.cpp @@ -75,7 +75,7 @@ CargoPacket::CargoPacket(uint16_t count, uint16_t periods_in_transit, StationID source_id(source_id), source(source), source_xy(source_xy), - loaded_at_xy(loaded_at_xy.value) + loaded_at_xy(loaded_at_xy) { assert(count != 0); this->source_type = source_type; @@ -553,7 +553,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); @@ -571,7 +571,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); @@ -866,4 +866,4 @@ uint StationCargoList::Reroute(uint max_move, StationCargoList *dest, StationID */ 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 08b7683f9c..96cb7fb506 100644 --- a/src/cargopacket.h +++ b/src/cargopacket.h @@ -34,7 +34,12 @@ template class CargoList; class StationCargoList; // forward-declare, so we can use it in VehicleCargoList. extern SaveLoadTable GetCargoPacketDesc(); -typedef uint32_t TileOrStationID; +/** + * 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. @@ -49,8 +54,8 @@ private: StationID source; ///< The station where the cargo came from first. 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. }; /** The CargoList caches, thus needs to know about it. */ @@ -416,7 +421,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);