summaryrefslogtreecommitdiff
path: root/src/saveload/labelmaps_sl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/saveload/labelmaps_sl.cpp')
-rw-r--r--src/saveload/labelmaps_sl.cpp42
1 files changed, 23 insertions, 19 deletions
diff --git a/src/saveload/labelmaps_sl.cpp b/src/saveload/labelmaps_sl.cpp
index 970985b92..432aa9ce4 100644
--- a/src/saveload/labelmaps_sl.cpp
+++ b/src/saveload/labelmaps_sl.cpp
@@ -99,35 +99,39 @@ static const SaveLoad _label_object_desc[] = {
SLE_VAR(LabelObject, label, SLE_UINT32),
};
-static void Save_RAIL()
-{
- SlTableHeader(_label_object_desc);
+struct RAILChunkHandler : ChunkHandler {
+ RAILChunkHandler() : ChunkHandler('RAIL', CH_TABLE) {}
+
+ void Save() const override
+ {
+ SlTableHeader(_label_object_desc);
- LabelObject lo;
+ LabelObject lo;
- for (RailType r = RAILTYPE_BEGIN; r != RAILTYPE_END; r++) {
- lo.label = GetRailTypeInfo(r)->label;
+ for (RailType r = RAILTYPE_BEGIN; r != RAILTYPE_END; r++) {
+ lo.label = GetRailTypeInfo(r)->label;
- SlSetArrayIndex(r);
- SlObject(&lo, _label_object_desc);
+ SlSetArrayIndex(r);
+ SlObject(&lo, _label_object_desc);
+ }
}
-}
-static void Load_RAIL()
-{
- const std::vector<SaveLoad> slt = SlCompatTableHeader(_label_object_desc, _label_object_sl_compat);
+ void Load() const override
+ {
+ const std::vector<SaveLoad> slt = SlCompatTableHeader(_label_object_desc, _label_object_sl_compat);
- ResetLabelMaps();
+ ResetLabelMaps();
- LabelObject lo;
+ LabelObject lo;
- while (SlIterateArray() != -1) {
- SlObject(&lo, slt);
- _railtype_list.push_back((RailTypeLabel)lo.label);
+ while (SlIterateArray() != -1) {
+ SlObject(&lo, slt);
+ _railtype_list.push_back((RailTypeLabel)lo.label);
+ }
}
-}
+};
-static const ChunkHandler RAIL{ 'RAIL', Save_RAIL, Load_RAIL, nullptr, nullptr, CH_TABLE };
+static const RAILChunkHandler RAIL;
static const ChunkHandlerRef labelmaps_chunk_handlers[] = {
RAIL,
};