diff --git a/src/sl/extended_ver_sl.cpp b/src/sl/extended_ver_sl.cpp index 0eba2cc3fb..c7ba34afca 100644 --- a/src/sl/extended_ver_sl.cpp +++ b/src/sl/extended_ver_sl.cpp @@ -116,7 +116,7 @@ const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = { { XSLFI_EXTENDED_GAMELOG, XSCF_NULL, 2, 2, "extended_gamelog", nullptr, nullptr, nullptr }, { XSLFI_STATION_CATCHMENT_INC, XSCF_NULL, 1, 1, "station_catchment_inc", nullptr, nullptr, nullptr }, { XSLFI_CUSTOM_BRIDGE_HEADS, XSCF_NULL, 4, 4, "custom_bridge_heads", nullptr, nullptr, nullptr }, - { XSLFI_CHUNNEL, XSCF_NULL, 2, 2, "chunnel", nullptr, nullptr, "TUNN" }, + { XSLFI_CHUNNEL, XSCF_NULL, 3, 3, "chunnel", nullptr, nullptr, "TUNN" }, { XSLFI_SCHEDULED_DISPATCH, XSCF_NULL, 8, 8, "scheduled_dispatch", nullptr, nullptr, nullptr }, { XSLFI_MORE_TOWN_GROWTH_RATES, XSCF_NULL, 1, 1, "more_town_growth_rates", nullptr, nullptr, nullptr }, { XSLFI_MULTIPLE_DOCKS, XSCF_NULL, 2, 2, "multiple_docks", nullptr, nullptr, nullptr }, diff --git a/src/sl/tunnel_sl.cpp b/src/sl/tunnel_sl.cpp index 769152ca08..43461b8e55 100644 --- a/src/sl/tunnel_sl.cpp +++ b/src/sl/tunnel_sl.cpp @@ -15,36 +15,39 @@ #include "../safeguards.h" -static const SaveLoad _tunnel_desc[] = { - SLE_CONDVAR(Tunnel, tile_n, SLE_UINT32, SL_MIN_VERSION, SL_MAX_VERSION), - SLE_CONDVAR(Tunnel, tile_s, SLE_UINT32, SL_MIN_VERSION, SL_MAX_VERSION), - SLE_CONDVAR(Tunnel, height, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION), - SLE_CONDVAR(Tunnel, is_chunnel, SLE_BOOL, SL_MIN_VERSION, SL_MAX_VERSION), - SLE_CONDVAR_X(Tunnel, style, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_NEW_SIGNAL_STYLES)), +static const NamedSaveLoad _tunnel_desc[] = { + NSL("tile_n", SLE_VAR(Tunnel, tile_n, SLE_UINT32)), + NSL("tile_s", SLE_VAR(Tunnel, tile_s, SLE_UINT32)), + NSL("height", SLE_VAR(Tunnel, height, SLE_UINT8)), + NSL("is_chunnel", SLE_VAR(Tunnel, is_chunnel, SLE_BOOL)), + NSL("style", SLE_CONDVAR_X(Tunnel, style, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_NEW_SIGNAL_STYLES))), }; static void Save_TUNN() { + std::vector slt = SlTableHeader(_tunnel_desc); + for (Tunnel *tunnel : Tunnel::Iterate()) { SlSetArrayIndex(tunnel->index); - SlObject(tunnel, _tunnel_desc); + SlObjectSaveFiltered(tunnel, slt); } } static void Load_TUNN() { - int index; + std::vector slt = SlTableHeaderOrRiff(_tunnel_desc); + int index; while ((index = SlIterateArray()) != -1) { Tunnel *tunnel = new (index) Tunnel(); - SlObject(tunnel, _tunnel_desc); + SlObjectLoadFiltered(tunnel, slt); tunnel->UpdateIndexes(); } } extern const ChunkHandler tunnel_chunk_handlers[] = { - { 'TUNN', Save_TUNN, Load_TUNN, nullptr, nullptr, CH_ARRAY }, + { 'TUNN', Save_TUNN, Load_TUNN, nullptr, nullptr, CH_TABLE }, }; extern const ChunkHandlerTable _tunnel_chunk_handlers(tunnel_chunk_handlers);