Saveload: Use table format for CAPA chunk
This commit is contained in:
@@ -35,7 +35,7 @@ struct GoodsEntry; // forward-declare for Stage() and RerouteStalePackets()
|
|||||||
|
|
||||||
template <class Tinst, class Tcont> class CargoList;
|
template <class Tinst, class Tcont> class CargoList;
|
||||||
class StationCargoList; // forward-declare, so we can use it in VehicleCargoList.
|
class StationCargoList; // forward-declare, so we can use it in VehicleCargoList.
|
||||||
extern SaveLoadTable GetCargoPacketDesc();
|
extern NamedSaveLoadTable GetCargoPacketDesc();
|
||||||
|
|
||||||
namespace upstream_sl {
|
namespace upstream_sl {
|
||||||
extern upstream_sl::SaveLoadTable GetCargoPacketDesc();
|
extern upstream_sl::SaveLoadTable GetCargoPacketDesc();
|
||||||
@@ -79,7 +79,7 @@ private:
|
|||||||
friend class VehicleCargoList;
|
friend class VehicleCargoList;
|
||||||
friend class StationCargoList;
|
friend class StationCargoList;
|
||||||
/** We want this to be saved, right? */
|
/** We want this to be saved, right? */
|
||||||
friend SaveLoadTable GetCargoPacketDesc();
|
friend NamedSaveLoadTable GetCargoPacketDesc();
|
||||||
friend upstream_sl::SaveLoadTable upstream_sl::GetCargoPacketDesc();
|
friend upstream_sl::SaveLoadTable upstream_sl::GetCargoPacketDesc();
|
||||||
friend void Load_CPDP();
|
friend void Load_CPDP();
|
||||||
public:
|
public:
|
||||||
|
@@ -155,23 +155,23 @@ extern btree::btree_map<uint64_t, Money> _cargo_packet_deferred_payments;
|
|||||||
* some of the variables itself are private.
|
* some of the variables itself are private.
|
||||||
* @return the saveload description for CargoPackets.
|
* @return the saveload description for CargoPackets.
|
||||||
*/
|
*/
|
||||||
SaveLoadTable GetCargoPacketDesc()
|
NamedSaveLoadTable GetCargoPacketDesc()
|
||||||
{
|
{
|
||||||
static const SaveLoad _cargopacket_desc[] = {
|
static const NamedSaveLoad _cargopacket_desc[] = {
|
||||||
SLE_VAR(CargoPacket, first_station, SLE_UINT16),
|
NSL("source", SLE_VAR(CargoPacket, first_station, SLE_UINT16)),
|
||||||
SLE_VAR(CargoPacket, source_xy, SLE_UINT32),
|
NSL("source_xy", SLE_VAR(CargoPacket, source_xy, SLE_UINT32)),
|
||||||
SLE_VAR(CargoPacket, next_hop, SLE_FILE_U32 | SLE_VAR_U16),
|
NSL("loaded_at_xy", SLE_VAR(CargoPacket, next_hop, SLE_FILE_U32 | SLE_VAR_U16)),
|
||||||
SLE_VAR(CargoPacket, count, SLE_UINT16),
|
NSL("count", SLE_VAR(CargoPacket, count, SLE_UINT16)),
|
||||||
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)),
|
NSL("periods_in_transit", 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)),
|
NSL("periods_in_transit", 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),
|
NSL("feeder_share", SLE_VAR(CargoPacket, feeder_share, SLE_INT64)),
|
||||||
SLE_CONDVAR(CargoPacket, source_type, SLE_UINT8, SLV_125, SL_MAX_VERSION),
|
NSL("source_type", SLE_CONDVAR(CargoPacket, source_type, SLE_UINT8, SLV_125, SL_MAX_VERSION)),
|
||||||
SLE_CONDVAR(CargoPacket, source_id, SLE_UINT16, SLV_125, SL_MAX_VERSION),
|
NSL("source_id", SLE_CONDVAR(CargoPacket, source_id, SLE_UINT16, SLV_125, SL_MAX_VERSION)),
|
||||||
SLE_CONDVAR_X(CargoPacket, travelled.x, SLE_INT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CARGO_TRAVELLED)),
|
NSL("travelled.x", SLE_CONDVAR_X(CargoPacket, travelled.x, SLE_INT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CARGO_TRAVELLED))),
|
||||||
SLE_CONDVAR_X(CargoPacket, travelled.y, SLE_INT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CARGO_TRAVELLED)),
|
NSL("travelled.y", SLE_CONDVAR_X(CargoPacket, travelled.y, SLE_INT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CARGO_TRAVELLED))),
|
||||||
|
|
||||||
/* Used to be paid_for, but that got changed. */
|
/* Used to be paid_for, but that got changed. */
|
||||||
SLE_CONDNULL(1, SL_MIN_VERSION, SLV_121),
|
NSL("", SLE_CONDNULL(1, SL_MIN_VERSION, SLV_121)),
|
||||||
};
|
};
|
||||||
return _cargopacket_desc;
|
return _cargopacket_desc;
|
||||||
}
|
}
|
||||||
@@ -181,10 +181,11 @@ SaveLoadTable GetCargoPacketDesc()
|
|||||||
*/
|
*/
|
||||||
static void Save_CAPA()
|
static void Save_CAPA()
|
||||||
{
|
{
|
||||||
std::vector<SaveLoad> filtered_packet_desc = SlFilterObject(GetCargoPacketDesc());
|
std::vector<SaveLoad> slt = SlTableHeader(GetCargoPacketDesc());
|
||||||
|
|
||||||
for (CargoPacket *cp : CargoPacket::Iterate()) {
|
for (CargoPacket *cp : CargoPacket::Iterate()) {
|
||||||
SlSetArrayIndex(cp->index);
|
SlSetArrayIndex(cp->index);
|
||||||
SlObjectSaveFiltered(cp, filtered_packet_desc);
|
SlObjectSaveFiltered(cp, slt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,11 +194,12 @@ static void Save_CAPA()
|
|||||||
*/
|
*/
|
||||||
static void Load_CAPA()
|
static void Load_CAPA()
|
||||||
{
|
{
|
||||||
std::vector<SaveLoad> filtered_packet_desc = SlFilterObject(GetCargoPacketDesc());
|
std::vector<SaveLoad> slt = SlTableHeaderOrRiff(GetCargoPacketDesc());
|
||||||
|
|
||||||
int index;
|
int index;
|
||||||
while ((index = SlIterateArray()) != -1) {
|
while ((index = SlIterateArray()) != -1) {
|
||||||
CargoPacket *cp = new (index) CargoPacket();
|
CargoPacket *cp = new (index) CargoPacket();
|
||||||
SlObjectLoadFiltered(cp, filtered_packet_desc);
|
SlObjectLoadFiltered(cp, slt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -237,7 +239,7 @@ void Load_CPDP()
|
|||||||
|
|
||||||
/** Chunk handlers related to cargo packets. */
|
/** Chunk handlers related to cargo packets. */
|
||||||
static const ChunkHandler cargopacket_chunk_handlers[] = {
|
static const ChunkHandler cargopacket_chunk_handlers[] = {
|
||||||
{ 'CAPA', Save_CAPA, Load_CAPA, nullptr, nullptr, CH_ARRAY },
|
{ 'CAPA', Save_CAPA, Load_CAPA, nullptr, nullptr, CH_TABLE },
|
||||||
{ 'CPDP', Save_CPDP, Load_CPDP, nullptr, nullptr, CH_RIFF },
|
{ 'CPDP', Save_CPDP, Load_CPDP, nullptr, nullptr, CH_RIFF },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -214,7 +214,7 @@ const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = {
|
|||||||
{ XSLFI_VEHICLE_ECONOMY_AGE, XSCF_NULL, 1, 1, "slv_vehicle_economy_age", nullptr, nullptr, nullptr },
|
{ XSLFI_VEHICLE_ECONOMY_AGE, XSCF_NULL, 1, 1, "slv_vehicle_economy_age", nullptr, nullptr, nullptr },
|
||||||
|
|
||||||
{ XSLFI_TABLE_PATS, XSCF_NULL, 1, 1, "table_pats", nullptr, nullptr, nullptr },
|
{ XSLFI_TABLE_PATS, XSCF_NULL, 1, 1, "table_pats", nullptr, nullptr, nullptr },
|
||||||
{ XSLFI_TABLE_MISC_SL, XSCF_NULL, 2, 2, "table_misc_sl", nullptr, nullptr, nullptr },
|
{ XSLFI_TABLE_MISC_SL, XSCF_NULL, 3, 3, "table_misc_sl", nullptr, nullptr, nullptr },
|
||||||
{ XSLFI_TABLE_SCRIPT_SL, XSCF_NULL, 1, 1, "table_script_sl", nullptr, nullptr, nullptr },
|
{ XSLFI_TABLE_SCRIPT_SL, XSCF_NULL, 1, 1, "table_script_sl", nullptr, nullptr, nullptr },
|
||||||
{ XSLFI_TABLE_NEWGRF_SL, XSCF_NULL, 2, 2, "table_newgrf_sl", nullptr, nullptr, nullptr },
|
{ XSLFI_TABLE_NEWGRF_SL, XSCF_NULL, 2, 2, "table_newgrf_sl", nullptr, nullptr, nullptr },
|
||||||
{ XSLFI_TABLE_INDUSTRY_SL, XSCF_NULL, 1, 1, "table_industry_sl", nullptr, nullptr, nullptr },
|
{ XSLFI_TABLE_INDUSTRY_SL, XSCF_NULL, 1, 1, "table_industry_sl", nullptr, nullptr, nullptr },
|
||||||
|
@@ -166,6 +166,7 @@ enum SlXvFeatureIndex {
|
|||||||
XSLFI_TABLE_MISC_SL, ///< Use upstream table format for miscellaneous chunks:
|
XSLFI_TABLE_MISC_SL, ///< Use upstream table format for miscellaneous chunks:
|
||||||
///< v1: DATE, VIEW, MAPS
|
///< v1: DATE, VIEW, MAPS
|
||||||
///< v2: SUBS, CMDL, CMPU, ERNW, DEPT, CAPY, ECMY, EIDS, ENGN, GOAL, GRPS, RAIL, OBJS, SIGN, PSAC, STPE, STPA
|
///< v2: SUBS, CMDL, CMPU, ERNW, DEPT, CAPY, ECMY, EIDS, ENGN, GOAL, GRPS, RAIL, OBJS, SIGN, PSAC, STPE, STPA
|
||||||
|
///< v3: CAPA
|
||||||
XSLFI_TABLE_SCRIPT_SL, ///< Use upstream table format for script chunks
|
XSLFI_TABLE_SCRIPT_SL, ///< Use upstream table format for script chunks
|
||||||
XSLFI_TABLE_NEWGRF_SL, ///< Use upstream table format for NewGRF/ID mapping chunks
|
XSLFI_TABLE_NEWGRF_SL, ///< Use upstream table format for NewGRF/ID mapping chunks
|
||||||
///< In v1, NGRF chunks were saved incorrectly: see SLBF_TABLE_ARRAY_LENGTH_PREFIX_MISSING
|
///< In v1, NGRF chunks were saved incorrectly: see SLBF_TABLE_ARRAY_LENGTH_PREFIX_MISSING
|
||||||
|
Reference in New Issue
Block a user