OpenTTD Source: src/saveload/saveload.h Source File

OpenTTD Source 14.0-RC3

saveload.h
Go to the documentation of this file.
1 /*
2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
6 */
7
10 #ifndef SAVELOAD_H
11 #define SAVELOAD_H
12
13 #include "saveload_error.hpp"
14 #include "../fileio_type.h"
15 #include "../fios.h"
16
30 enum SaveLoadVersion : uint16_t {
31 SL_MIN_VERSION,
32
33 SLV_1,
34 SLV_2,
36 SLV_3,
37 SLV_4,
43 SLV_5,
46 SLV_6,
48 SLV_7,
49 SLV_8,
50 SLV_9,
51
52 SLV_10,
53 SLV_11,
55 SLV_12,
56 SLV_13,
57 SLV_14,
58
59 SLV_15,
60 SLV_16,
62 SLV_17,
64 SLV_18,
65 SLV_19,
66
67 SLV_20,
68 SLV_21,
69 SLV_22,
70 SLV_23,
71 SLV_24,
72
73 SLV_25,
74 SLV_26,
75 SLV_27,
76 SLV_28,
77 SLV_29,
78
79 SLV_30,
80 SLV_31,
81 SLV_32,
82 SLV_33,
83 SLV_34,
84
85 SLV_35,
86 SLV_36,
87 SLV_37,
88 SLV_38,
89 SLV_39,
90
91 SLV_40,
92 SLV_41,
93 SLV_42,
94 SLV_43,
95 SLV_44,
96
97 SLV_45,
98 SLV_46,
99 SLV_47,
100 SLV_48,
101 SLV_49,
102
103 SLV_50,
104 SLV_51,
105 SLV_52,
106 SLV_53,
107 SLV_54,
108
109 SLV_55,
110 SLV_56,
111 SLV_57,
112 SLV_58,
113 SLV_59,
114
115 SLV_60,
116 SLV_61,
117 SLV_62,
118 SLV_63,
119 SLV_64,
120
121 SLV_65,
122 SLV_66,
123 SLV_67,
124 SLV_68,
125 SLV_69,
126
127 SLV_70,
128 SLV_71,
129 SLV_72,
130 SLV_73,
131 SLV_74,
132
133 SLV_75,
134 SLV_76,
135 SLV_77,
136 SLV_78,
137 SLV_79,
138
139 SLV_80,
140 SLV_81,
141 SLV_82,
142 SLV_83,
143 SLV_84,
144
145 SLV_85,
146 SLV_86,
147 SLV_87,
148 SLV_88,
149 SLV_89,
150
151 SLV_90,
152 SLV_91,
153 SLV_92,
154 SLV_93,
155 SLV_94,
156
157 SLV_95,
158 SLV_96,
159 SLV_97,
160 SLV_98,
161 SLV_99,
162
163 SLV_100,
164 SLV_101,
165 SLV_102,
166 SLV_103,
167 SLV_104,
168
169 SLV_105,
170 SLV_106,
171 SLV_107,
172 SLV_108,
173 SLV_109,
174
175 SLV_110,
176 SLV_111,
177 SLV_112,
178 SLV_113,
179 SLV_114,
180
181 SLV_115,
182 SLV_116,
183 SLV_117,
184 SLV_118,
185 SLV_119,
186
187 SLV_120,
188 SLV_121,
189 SLV_122,
190 SLV_123,
191 SLV_124,
192
193 SLV_125,
194 SLV_126,
195 SLV_127,
196 SLV_128,
197 SLV_129,
198
199 SLV_130,
200 SLV_131,
201 SLV_132,
202 SLV_133,
203 SLV_134,
204
205 SLV_135,
206 SLV_136,
207 SLV_137,
208 SLV_138,
209 SLV_139,
210
211 SLV_140,
212 SLV_141,
213 SLV_142,
214 SLV_143,
215 SLV_144,
216
217 SLV_145,
218 SLV_146,
219 SLV_147,
220 SLV_148,
221 SLV_149,
222
223 SLV_150,
224 SLV_151,
225 SLV_152,
226 SLV_153,
227 SLV_154,
228
229 SLV_155,
230 SLV_156,
231 SLV_157,
232 SLV_158,
233 SLV_159,
234
235 SLV_160,
236 SLV_161,
237 SLV_162,
238 SLV_163,
239 SLV_164,
240
241 SLV_165,
242 SLV_166,
243 SLV_167,
244 SLV_168,
245 SLV_169,
246
247 SLV_170,
248 SLV_171,
249 SLV_172,
250 SLV_173,
251 SLV_174,
252
253 SLV_175,
254 SLV_176,
255 SLV_177,
256 SLV_178,
257 SLV_179,
258
259 SLV_180,
260 SLV_181,
261 SLV_182,
262 SLV_183,
263 SLV_184,
264
265 SLV_185,
266 SLV_186,
267 SLV_187,
268 SLV_188,
269 SLV_189,
270
271 SLV_190,
272 SLV_191,
273 SLV_192,
275 SLV_193,
276 SLV_194,
277
278 SLV_195,
279 SLV_196,
280 SLV_197,
281 SLV_198,
282 SLV_EXTEND_CARGOTYPES,
283
284 SLV_EXTEND_RAILTYPES,
285 SLV_EXTEND_PERSISTENT_STORAGE,
286 SLV_EXTEND_INDUSTRY_CARGO_SLOTS,
287 SLV_SHIP_PATH_CACHE,
288 SLV_SHIP_ROTATION,
289
290 SLV_GROUP_LIVERIES,
291 SLV_SHIPS_STOP_IN_LOCKS,
292 SLV_FIX_CARGO_MONITOR,
293 SLV_TOWN_CARGOGEN,
294 SLV_SHIP_CURVE_PENALTY,
295
296 SLV_SERVE_NEUTRAL_INDUSTRIES,
297 SLV_ROADVEH_PATH_CACHE,
298 SLV_REMOVE_OPF,
299 SLV_TREES_WATER_CLASS,
300 SLV_ROAD_TYPES,
301
302 SLV_SCRIPT_MEMLIMIT,
303 SLV_MULTITILE_DOCKS,
304 SLV_TRADING_AGE,
305 SLV_ENDING_YEAR,
306 SLV_REMOVE_TOWN_CARGO_CACHE,
307
308 /* Patchpacks for a while considered it a good idea to jump a few versions
309 * above our version for their savegames. But as time continued, this gap
310 * has been closing, up to the point we would start to reuse versions from
311 * their patchpacks. This is not a problem from our perspective: the
312 * savegame will simply fail to load because they all contain chunks we
313 * cannot digest. But, this gives for ugly errors. As we have plenty of
314 * versions anyway, we simply skip the versions we know belong to
315 * patchpacks. This way we can present the user with a clean error
316 * indicate they are loading a savegame from a patchpack.
317 * For future patchpack creators: please follow a system like JGRPP, where
318 * the version is masked with 0x8000, and the true version is stored in
319 * its own chunk with feature toggles.
320 */
321 SLV_START_PATCHPACKS,
322 SLV_END_PATCHPACKS = 286,
323
324 SLV_GS_INDUSTRY_CONTROL,
325 SLV_VEH_MOTION_COUNTER,
326 SLV_INDUSTRY_TEXT,
327
328 SLV_MAPGEN_SETTINGS_REVAMP,
329 SLV_GROUP_REPLACE_WAGON_REMOVAL,
330 SLV_CUSTOM_SUBSIDY_DURATION,
331 SLV_SAVELOAD_LIST_LENGTH,
332 SLV_RIFF_TO_ARRAY,
333
334 SLV_TABLE_CHUNKS,
335 SLV_SCRIPT_INT64,
336 SLV_LINKGRAPH_TRAVEL_TIME,
337 SLV_DOCK_DOCKINGTILES,
338 SLV_REPAIR_OBJECT_DOCKING_TILES,
339
340 SLV_U64_TICK_COUNTER,
341 SLV_LAST_LOADING_TICK,
342 SLV_MULTITRACK_LEVEL_CROSSINGS,
343 SLV_NEWGRF_ROAD_STOPS,
344 SLV_LINKGRAPH_EDGES,
345
346 SLV_VELOCITY_NAUTICAL,
347 SLV_CONSISTENT_PARTIAL_Z,
348 SLV_MORE_CARGO_AGE,
349 SLV_LINKGRAPH_SECONDS,
350 SLV_AI_START_DATE,
351
352 SLV_EXTEND_VEHICLE_RANDOM,
353 SLV_EXTEND_ENTITY_MAPPING,
354 SLV_DISASTER_VEH_STATE,
355 SLV_SAVEGAME_ID,
356 SLV_STRING_GAMELOG,
357
358 SLV_INDUSTRY_CARGO_REORGANISE,
359 SLV_PERIODS_IN_TRANSIT_RENAME,
360 SLV_NEWGRF_LAST_SERVICE,
361 SLV_REMOVE_LOADED_AT_XY,
362 SLV_CARGO_TRAVELLED,
363
364 SLV_STATION_RATING_CHEAT,
365 SLV_TIMETABLE_START_TICKS,
366 SLV_TIMETABLE_START_TICKS_FIX,
367 SLV_TIMETABLE_TICKS_TYPE,
368 SLV_WATER_REGIONS,
369
370 SLV_WATER_REGION_EVAL_SIMPLIFIED,
371 SLV_ECONOMY_DATE,
372 SLV_ECONOMY_MODE_TIMEKEEPING_UNITS,
373 SLV_CALENDAR_SUB_DATE_FRACT,
374 SLV_SHIP_ACCELERATION,
375
376 SLV_MAX_LOAN_FOR_COMPANY,
377 SLV_DEPOT_UNBUNCHING,
378 SLV_AI_LOCAL_CONFIG,
379 SLV_SCRIPT_RANDOMIZER,
380 SLV_VEHICLE_ECONOMY_AGE,
381
382 SL_MAX_VERSION,
383 };
384
386 enum SaveOrLoadResult {
387 SL_OK = 0,
388 SL_ERROR = 1,
389 SL_REINIT = 2,
390 };
391
393 struct FileToSaveLoad {
394 SaveLoadOperation file_op;
395 DetailedFileType detail_ftype;
396 AbstractFileType abstract_ftype;
397 std::string name;
398 std::string title;
399
400 void SetMode(FiosType ft);
401 void SetMode(SaveLoadOperation fop, AbstractFileType aft, DetailedFileType dft);
402 void Set(const FiosItem &item);
403 };
404
406 enum SavegameType {
407 SGT_TTD,
408 SGT_TTDP1,
409 SGT_TTDP2,
410 SGT_OTTD,
411 SGT_TTO,
412 SGT_INVALID = 0xFF,
413 };
414
415 extern FileToSaveLoad _file_to_saveload;
416
417 std::string GenerateDefaultSaveName();
418 void SetSaveLoadError(StringID str);
419 const char *GetSaveLoadErrorString();
420 SaveOrLoadResult SaveOrLoad(const std::string &filename, SaveLoadOperation fop, DetailedFileType dft, Subdirectory sb, bool threaded = true);
421 void WaitTillSaved();
422 void ProcessAsyncSaveFinish();
423 void DoExitSave();
424
425 void DoAutoOrNetsave(FiosNumberedSaveName &counter);
426
427 SaveOrLoadResult SaveWithFilter(std::shared_ptr<struct SaveFilter> writer, bool threaded);
428 SaveOrLoadResult LoadWithFilter(std::shared_ptr<struct LoadFilter> reader);
429
430 typedef void AutolengthProc(void *arg);
431
433 enum ChunkType {
434 CH_RIFF = 0,
435 CH_ARRAY = 1,
436 CH_SPARSE_ARRAY = 2,
437 CH_TABLE = 3,
438 CH_SPARSE_TABLE = 4,
439
440 CH_TYPE_MASK = 0xf,
441 CH_READONLY,
442 };
443
445 struct ChunkHandler {
446 uint32_t id;
447 ChunkType type;
448
449 ChunkHandler(uint32_t id, ChunkType type) : id(id), type(type) {}
450
451 virtual ~ChunkHandler() = default;
452
457 virtual void Save() const { NOT_REACHED(); }
458
463 virtual void Load() const = 0;
464
471 virtual void FixPointers() const {}
472
478 virtual void LoadCheck(size_t len = 0) const;
479
480 std::string GetName() const
481 {
482 return std::string()
483 + static_cast<char>(this->id >> 24)
484 + static_cast<char>(this->id >> 16)
485 + static_cast<char>(this->id >> 8)
486 + static_cast<char>(this->id);
487 }
488 };
489
491 using ChunkHandlerRef = std::reference_wrapper<const ChunkHandler>;
492
494 using ChunkHandlerTable = std::span<const ChunkHandlerRef>;
495
497 using SaveLoadTable = std::span<const struct SaveLoad>;
498
500 using SaveLoadCompatTable = std::span<const struct SaveLoadCompat>;
501
503 class SaveLoadHandler {
504 public:
505 std::optional<std::vector<SaveLoad>> load_description;
506
507 virtual ~SaveLoadHandler() = default;
508
513 virtual void Save([[maybe_unused]] void *object) const {}
514
519 virtual void Load([[maybe_unused]] void *object) const {}
520
525 virtual void LoadCheck([[maybe_unused]] void *object) const {}
526
531 virtual void FixPointers([[maybe_unused]] void *object) const {}
532
536 virtual SaveLoadTable GetDescription() const = 0;
537
541 virtual SaveLoadCompatTable GetCompatDescription() const = 0;
542
548 SaveLoadTable GetLoadDescription() const;
549 };
550
562 template <class TImpl, class TObject>
563 class DefaultSaveLoadHandler : public SaveLoadHandler {
564 public:
565 SaveLoadTable GetDescription() const override { return static_cast<const TImpl *>(this)->description; }
566 SaveLoadCompatTable GetCompatDescription() const override { return static_cast<const TImpl *>(this)->compat_description; }
567
568 virtual void Save([[maybe_unused]] TObject *object) const {}
569 void Save(void *object) const override { this->Save(static_cast<TObject *>(object)); }
570
571 virtual void Load([[maybe_unused]] TObject *object) const {}
572 void Load(void *object) const override { this->Load(static_cast<TObject *>(object)); }
573
574 virtual void LoadCheck([[maybe_unused]] TObject *object) const {}
575 void LoadCheck(void *object) const override { this->LoadCheck(static_cast<TObject *>(object)); }
576
577 virtual void FixPointers([[maybe_unused]] TObject *object) const {}
578 void FixPointers(void *object) const override { this->FixPointers(static_cast<TObject *>(object)); }
579 };
580
582 enum SLRefType {
583 REF_ORDER = 0,
584 REF_VEHICLE = 1,
585 REF_STATION = 2,
586 REF_TOWN = 3,
587 REF_VEHICLE_OLD = 4,
588 REF_ROADSTOPS = 5,
589 REF_ENGINE_RENEWS = 6,
590 REF_CARGO_PACKET = 7,
591 REF_ORDERLIST = 8,
592 REF_STORAGE = 9,
593 REF_LINK_GRAPH = 10,
594 REF_LINK_GRAPH_JOB = 11,
595 };
596
605 enum VarTypes {
606 /* 4 bits allocated a maximum of 16 types for NumberType.
607 * NOTE: the SLE_FILE_NNN values are stored in the savegame! */
608 SLE_FILE_END = 0,
609 SLE_FILE_I8 = 1,
610 SLE_FILE_U8 = 2,
611 SLE_FILE_I16 = 3,
612 SLE_FILE_U16 = 4,
613 SLE_FILE_I32 = 5,
614 SLE_FILE_U32 = 6,
615 SLE_FILE_I64 = 7,
616 SLE_FILE_U64 = 8,
617 SLE_FILE_STRINGID = 9,
618 SLE_FILE_STRING = 10,
619 SLE_FILE_STRUCT = 11,
620 /* 4 more possible file-primitives */
621
622 SLE_FILE_TYPE_MASK = 0xf,
623 SLE_FILE_HAS_LENGTH_FIELD = 1 << 4,
624
625 /* 4 bits allocated a maximum of 16 types for NumberType */
626 SLE_VAR_BL = 0 << 4,
627 SLE_VAR_I8 = 1 << 4,
628 SLE_VAR_U8 = 2 << 4,
629 SLE_VAR_I16 = 3 << 4,
630 SLE_VAR_U16 = 4 << 4,
631 SLE_VAR_I32 = 5 << 4,
632 SLE_VAR_U32 = 6 << 4,
633 SLE_VAR_I64 = 7 << 4,
634 SLE_VAR_U64 = 8 << 4,
635 SLE_VAR_NULL = 9 << 4,
636 SLE_VAR_STR = 12 << 4,
637 SLE_VAR_STRQ = 13 << 4,
638 SLE_VAR_NAME = 14 << 4,
639 /* 1 more possible memory-primitives */
640
641 /* Shortcut values */
642 SLE_VAR_CHAR = SLE_VAR_I8,
643
644 /* Default combinations of variables. As savegames change, so can variables
645 * and thus it is possible that the saved value and internal size do not
646 * match and you need to specify custom combo. The defaults are listed here */
647 SLE_BOOL = SLE_FILE_I8 | SLE_VAR_BL,
648 SLE_INT8 = SLE_FILE_I8 | SLE_VAR_I8,
649 SLE_UINT8 = SLE_FILE_U8 | SLE_VAR_U8,
650 SLE_INT16 = SLE_FILE_I16 | SLE_VAR_I16,
651 SLE_UINT16 = SLE_FILE_U16 | SLE_VAR_U16,
652 SLE_INT32 = SLE_FILE_I32 | SLE_VAR_I32,
653 SLE_UINT32 = SLE_FILE_U32 | SLE_VAR_U32,
654 SLE_INT64 = SLE_FILE_I64 | SLE_VAR_I64,
655 SLE_UINT64 = SLE_FILE_U64 | SLE_VAR_U64,
656 SLE_CHAR = SLE_FILE_I8 | SLE_VAR_CHAR,
657 SLE_STRINGID = SLE_FILE_STRINGID | SLE_VAR_U32,
658 SLE_STRING = SLE_FILE_STRING | SLE_VAR_STR,
659 SLE_STRINGQUOTE = SLE_FILE_STRING | SLE_VAR_STRQ,
660 SLE_NAME = SLE_FILE_STRINGID | SLE_VAR_NAME,
661
662 /* Shortcut values */
663 SLE_UINT = SLE_UINT32,
664 SLE_INT = SLE_INT32,
665 SLE_STR = SLE_STRING,
666 SLE_STRQ = SLE_STRINGQUOTE,
667
668 /* 8 bits allocated for a maximum of 8 flags
669 * Flags directing saving/loading of a variable */
670 SLF_ALLOW_CONTROL = 1 << 8,
671 SLF_ALLOW_NEWLINE = 1 << 9,
672 };
673
674 typedef uint32_t VarType;
675
677 enum SaveLoadType : byte {
678 SL_VAR = 0,
679 SL_REF = 1,
680 SL_STRUCT = 2,
681
682 SL_STDSTR = 4,
683
684 SL_ARR = 5,
685 SL_DEQUE = 6,
686 SL_VECTOR = 7,
687 SL_REFLIST = 8,
688 SL_STRUCTLIST = 9,
689
690 SL_SAVEBYTE = 10,
691 SL_NULL = 11,
692 };
693
694 typedef void *SaveLoadAddrProc(void *base, size_t extra);
695
697 struct SaveLoad {
698 std::string name;
699 SaveLoadType cmd;
700 VarType conv;
701 uint16_t length;
702 SaveLoadVersion version_from;
703 SaveLoadVersion version_to;
704 size_t size;
705 SaveLoadAddrProc *address_proc;
706 size_t extra_data;
707 std::shared_ptr<SaveLoadHandler> handler;
708 };
709
718 struct SaveLoadCompat {
719 std::string name;
720 VarTypes null_type;
721 uint16_t null_length;
722 SaveLoadVersion version_from;
723 SaveLoadVersion version_to;
724 };
725
732 inline constexpr VarType GetVarMemType(VarType type)
733 {
734 return GB(type, 4, 4) << 4;
735 }
736
743 inline constexpr VarType GetVarFileType(VarType type)
744 {
745 return GB(type, 0, 4);
746 }
747
753 inline constexpr bool IsNumericType(VarType conv)
754 {
755 return GetVarMemType(conv) <= SLE_VAR_U64;
756 }
757
763 inline constexpr size_t SlVarSize(VarType type)
764 {
765 switch (GetVarMemType(type)) {
766 case SLE_VAR_BL: return sizeof(bool);
767 case SLE_VAR_I8: return sizeof(int8_t);
768 case SLE_VAR_U8: return sizeof(uint8_t);
769 case SLE_VAR_I16: return sizeof(int16_t);
770 case SLE_VAR_U16: return sizeof(uint16_t);
771 case SLE_VAR_I32: return sizeof(int32_t);
772 case SLE_VAR_U32: return sizeof(uint32_t);
773 case SLE_VAR_I64: return sizeof(int64_t);
774 case SLE_VAR_U64: return sizeof(uint64_t);
775 case SLE_VAR_NULL: return sizeof(void *);
776 case SLE_VAR_STR: return sizeof(std::string);
777 case SLE_VAR_STRQ: return sizeof(std::string);
778 case SLE_VAR_NAME: return sizeof(std::string);
779 default: NOT_REACHED();
780 }
781 }
782
791 inline constexpr bool SlCheckVarSize(SaveLoadType cmd, VarType type, size_t length, size_t size)
792 {
793 switch (cmd) {
794 case SL_VAR: return SlVarSize(type) == size;
795 case SL_REF: return sizeof(void *) == size;
796 case SL_STDSTR: return SlVarSize(type) == size;
797 case SL_ARR: return SlVarSize(type) * length <= size; // Partial load of array is permitted.
798 case SL_DEQUE: return sizeof(std::deque<void *>) == size;
799 case SL_VECTOR: return sizeof(std::vector<void *>) == size;
800 case SL_REFLIST: return sizeof(std::list<void *>) == size;
801 case SL_SAVEBYTE: return true;
802 default: NOT_REACHED();
803 }
804 }
805
819 #define SLE_GENERAL_NAME(cmd, name, base, variable, type, length, from, to, extra) \
820 SaveLoad {name, cmd, type, length, from, to, cpp_sizeof(base, variable), [] (void *b, size_t) -> void * { \
821 static_assert(SlCheckVarSize(cmd, type, length, sizeof(static_cast<base *>(b)->variable))); \
822 assert(b != nullptr); \
823 return const_cast<void *>(static_cast<const void *>(std::addressof(static_cast<base *>(b)->variable))); \
824 }, extra, nullptr}
825
838 #define SLE_GENERAL(cmd, base, variable, type, length, from, to, extra) SLE_GENERAL_NAME(cmd, #variable, base, variable, type, length, from, to, extra)
839
848 #define SLE_CONDVAR(base, variable, type, from, to) SLE_GENERAL(SL_VAR, base, variable, type, 0, from, to, 0)
849
859 #define SLE_CONDVARNAME(base, variable, name, type, from, to) SLE_GENERAL_NAME(SL_VAR, name, base, variable, type, 0, from, to, 0)
860
869 #define SLE_CONDREF(base, variable, type, from, to) SLE_GENERAL(SL_REF, base, variable, type, 0, from, to, 0)
870
880 #define SLE_CONDARR(base, variable, type, length, from, to) SLE_GENERAL(SL_ARR, base, variable, type, length, from, to, 0)
881
892 #define SLE_CONDARRNAME(base, variable, name, type, length, from, to) SLE_GENERAL_NAME(SL_ARR, name, base, variable, type, length, from, to, 0)
893
903 #define SLE_CONDSTR(base, variable, type, length, from, to) SLE_GENERAL(SL_STR, base, variable, type, length, from, to, 0)
904
913 #define SLE_CONDSSTR(base, variable, type, from, to) SLE_GENERAL(SL_STDSTR, base, variable, type, 0, from, to, 0)
914
924 #define SLE_CONDSSTRNAME(base, variable, name, type, from, to) SLE_GENERAL_NAME(SL_STDSTR, name, base, variable, type, 0, from, to, 0)
925
934 #define SLE_CONDREFLIST(base, variable, type, from, to) SLE_GENERAL(SL_REFLIST, base, variable, type, 0, from, to, 0)
935
944 #define SLE_CONDDEQUE(base, variable, type, from, to) SLE_GENERAL(SL_DEQUE, base, variable, type, 0, from, to, 0)
945
952 #define SLE_VAR(base, variable, type) SLE_CONDVAR(base, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)
953
961 #define SLE_VARNAME(base, variable, name, type) SLE_CONDVARNAME(base, variable, name, type, SL_MIN_VERSION, SL_MAX_VERSION)
962
969 #define SLE_REF(base, variable, type) SLE_CONDREF(base, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)
970
978 #define SLE_ARR(base, variable, type, length) SLE_CONDARR(base, variable, type, length, SL_MIN_VERSION, SL_MAX_VERSION)
979
988 #define SLE_ARRNAME(base, variable, name, type, length) SLE_CONDARRNAME(base, variable, name, type, length, SL_MIN_VERSION, SL_MAX_VERSION)
989
996 #define SLE_SSTR(base, variable, type) SLE_CONDSSTR(base, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)
997
1005 #define SLE_SSTRNAME(base, variable, name, type) SLE_CONDSSTRNAME(base, variable, name, type, SL_MIN_VERSION, SL_MAX_VERSION)
1006
1013 #define SLE_REFLIST(base, variable, type) SLE_CONDREFLIST(base, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)
1014
1025 #define SLE_SAVEBYTE(base, variable) SLE_GENERAL(SL_SAVEBYTE, base, variable, 0, 0, SL_MIN_VERSION, SL_MAX_VERSION, 0)
1026
1038 #define SLEG_GENERAL(name, cmd, variable, type, length, from, to, extra) \
1039 SaveLoad {name, cmd, type, length, from, to, sizeof(variable), [] (void *, size_t) -> void * { \
1040 static_assert(SlCheckVarSize(cmd, type, length, sizeof(variable))); \
1041 return static_cast<void *>(std::addressof(variable)); }, extra, nullptr}
1042
1051 #define SLEG_CONDVAR(name, variable, type, from, to) SLEG_GENERAL(name, SL_VAR, variable, type, 0, from, to, 0)
1052
1061 #define SLEG_CONDREF(name, variable, type, from, to) SLEG_GENERAL(name, SL_REF, variable, type, 0, from, to, 0)
1062
1072 #define SLEG_CONDARR(name, variable, type, length, from, to) SLEG_GENERAL(name, SL_ARR, variable, type, length, from, to, 0)
1073
1082 #define SLEG_CONDSSTR(name, variable, type, from, to) SLEG_GENERAL(name, SL_STDSTR, variable, type, 0, from, to, 0)
1083
1091 #define SLEG_CONDSTRUCT(name, handler, from, to) SaveLoad {name, SL_STRUCT, 0, 0, from, to, 0, nullptr, 0, std::make_shared<handler>()}
1092
1101 #define SLEG_CONDREFLIST(name, variable, type, from, to) SLEG_GENERAL(name, SL_REFLIST, variable, type, 0, from, to, 0)
1102
1111 #define SLEG_CONDVECTOR(name, variable, type, from, to) SLEG_GENERAL(name, SL_VECTOR, variable, type, 0, from, to, 0)
1112
1120 #define SLEG_CONDSTRUCTLIST(name, handler, from, to) SaveLoad {name, SL_STRUCTLIST, 0, 0, from, to, 0, nullptr, 0, std::make_shared<handler>()}
1121
1128 #define SLEG_VAR(name, variable, type) SLEG_CONDVAR(name, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)
1129
1136 #define SLEG_REF(name, variable, type) SLEG_CONDREF(name, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)
1137
1144 #define SLEG_ARR(name, variable, type) SLEG_CONDARR(name, variable, type, lengthof(variable), SL_MIN_VERSION, SL_MAX_VERSION)
1145
1152 #define SLEG_SSTR(name, variable, type) SLEG_CONDSSTR(name, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)
1153
1159 #define SLEG_STRUCT(name, handler) SLEG_CONDSTRUCT(name, handler, SL_MIN_VERSION, SL_MAX_VERSION)
1160
1167 #define SLEG_REFLIST(name, variable, type) SLEG_CONDREFLIST(name, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)
1168
1175 #define SLEG_VECTOR(name, variable, type) SLEG_CONDVECTOR(name, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)
1176
1182 #define SLEG_STRUCTLIST(name, handler) SLEG_CONDSTRUCTLIST(name, handler, SL_MIN_VERSION, SL_MAX_VERSION)
1183
1188 #define SLC_VAR(name) {name, SLE_FILE_U8, 0, SL_MIN_VERSION, SL_MAX_VERSION}
1189
1196 #define SLC_NULL(length, from, to) {{}, SLE_FILE_U8, length, from, to}
1197
1204 #define SLC_NULL_STR(length, from, to) {{}, SLE_FILE_STRING, length, from, to}
1205
1207 #define SLC_END() {{}, 0, 0, SL_MIN_VERSION, SL_MIN_VERSION}
1208
1215 inline bool IsSavegameVersionBefore(SaveLoadVersion major, byte minor = 0)
1216 {
1217 extern SaveLoadVersion _sl_version;
1218 extern byte _sl_minor_version;
1219 return _sl_version < major || (minor > 0 && _sl_version == major && _sl_minor_version < minor);
1220 }
1221
1229 inline bool IsSavegameVersionBeforeOrAt(SaveLoadVersion major)
1230 {
1231 extern SaveLoadVersion _sl_version;
1232 return _sl_version <= major;
1233 }
1234
1242 inline bool SlIsObjectCurrentlyValid(SaveLoadVersion version_from, SaveLoadVersion version_to)
1243 {
1244 extern const SaveLoadVersion SAVEGAME_VERSION;
1245 return version_from <= SAVEGAME_VERSION && SAVEGAME_VERSION < version_to;
1246 }
1247
1253 inline void *GetVariableAddress(const void *object, const SaveLoad &sld)
1254 {
1255 /* Entry is a null-variable, mostly used to read old savegames etc. */
1256 if (GetVarMemType(sld.conv) == SLE_VAR_NULL) {
1257 assert(sld.address_proc == nullptr);
1258 return nullptr;
1259 }
1260
1261 /* Everything else should be a non-null pointer. */
1262 assert(sld.address_proc != nullptr);
1263 return sld.address_proc(const_cast<void *>(object), sld.extra_data);
1264 }
1265
1266 int64_t ReadValue(const void *ptr, VarType conv);
1267 void WriteValue(void *ptr, VarType conv, int64_t val);
1268
1269 void SlSetArrayIndex(uint index);
1270 int SlIterateArray();
1271
1272 void SlSetStructListLength(size_t length);
1273 size_t SlGetStructListLength(size_t limit);
1274
1275 void SlAutolength(AutolengthProc *proc, void *arg);
1276 size_t SlGetFieldLength();
1277 void SlSetLength(size_t length);
1278 size_t SlCalcObjMemberLength(const void *object, const SaveLoad &sld);
1279 size_t SlCalcObjLength(const void *object, const SaveLoadTable &slt);
1280
1281 byte SlReadByte();
1282 void SlWriteByte(byte b);
1283
1284 void SlGlobList(const SaveLoadTable &slt);
1285 void SlCopy(void *object, size_t length, VarType conv);
1286 std::vector<SaveLoad> SlTableHeader(const SaveLoadTable &slt);
1287 std::vector<SaveLoad> SlCompatTableHeader(const SaveLoadTable &slt, const SaveLoadCompatTable &slct);
1288 void SlObject(void *object, const SaveLoadTable &slt);
1289
1290 bool SaveloadCrashWithMissingNewGRFs();
1291
1297 inline void SlSkipBytes(size_t length)
1298 {
1299 for (; length != 0; length--) SlReadByte();
1300 }
1301
1302 extern std::string _savegame_format;
1303 extern bool _do_autosave;
1304
1305 #endif /* SAVELOAD_H */
SLV_38
@ SLV_38
38 7195
Definition: saveload.h:88
SL_NULL
@ SL_NULL
Save null-bytes and load to nowhere.
Definition: saveload.h:691
SGT_INVALID
@ SGT_INVALID
broken savegame (used internally)
Definition: saveload.h:412
SaveLoadVersion
SaveLoadVersion
SaveLoad versions Previous savegame versions, the trunk revision where they were introduced and the r...
Definition: saveload.h:30
SaveLoad::version_to
SaveLoadVersion version_to
Save/load the variable before this savegame version.
Definition: saveload.h:703
SLV_REMOVE_OPF
@ SLV_REMOVE_OPF
212 PR#7245 Remove OPF.
Definition: saveload.h:298
SLV_74
@ SLV_74
74 11030
Definition: saveload.h:131
REF_ORDER
@ REF_ORDER
Load/save a reference to an order.
Definition: saveload.h:583
SaveLoadType
SaveLoadType
Type of data saved.
Definition: saveload.h:677
SaveLoadHandler::Save
virtual void Save([[maybe_unused]] void *object) const
Save the object to disk.
Definition: saveload.h:513
DefaultSaveLoadHandler
Default handler for saving/loading an object to/from disk.
Definition: saveload.h:563
SLV_5
@ SLV_5
5.0 1429 5.1 1440 5.2 1525 0.3.6
Definition: saveload.h:43
SGT_OTTD
@ SGT_OTTD
OTTD savegame.
Definition: saveload.h:410
SLV_GROUP_REPLACE_WAGON_REMOVAL
@ SLV_GROUP_REPLACE_WAGON_REMOVAL
291 PR#7441 Per-group wagon removal flag.
Definition: saveload.h:329
SLV_137
@ SLV_137
137 18912
Definition: saveload.h:207
SLV_73
@ SLV_73
73 10903
Definition: saveload.h:130
SLV_60
@ SLV_60
60 9874
Definition: saveload.h:115
SLV_77
@ SLV_77
77 11172
Definition: saveload.h:135
SLE_VAR_STR
@ SLE_VAR_STR
string pointer
Definition: saveload.h:636
SLV_123
@ SLV_123
123 16909
Definition: saveload.h:190
SLV_32
@ SLV_32
32 6001
Definition: saveload.h:81
SLV_70
@ SLV_70
70 10541
Definition: saveload.h:127
SLV_49
@ SLV_49
49 8969
Definition: saveload.h:101
SLV_86
@ SLV_86
86 12042
Definition: saveload.h:146
SaveLoadTable
std::span< const struct SaveLoad > SaveLoadTable
A table of SaveLoad entries.
Definition: saveload.h:497
SLV_191
@ SLV_191
191 26636 FS#6026 Fix disaster vehicle storage (No bump) 191 26646 FS#6041 Linkgraph - store location...
Definition: saveload.h:272
SLV_REMOVE_LOADED_AT_XY
@ SLV_REMOVE_LOADED_AT_XY
318 PR#11276 Remove loaded_at_xy variable from CargoPacket.
Definition: saveload.h:361
REF_TOWN
@ REF_TOWN
Load/save a reference to a town.
Definition: saveload.h:586
SLV_63
@ SLV_63
63 9956
Definition: saveload.h:118
SLV_U64_TICK_COUNTER
@ SLV_U64_TICK_COUNTER
300 PR#10035 Make tick counter 64bit to avoid wrapping.
Definition: saveload.h:340
SLV_28
@ SLV_28
28 4987
Definition: saveload.h:76
SLV_NEWGRF_ROAD_STOPS
@ SLV_NEWGRF_ROAD_STOPS
303 PR#10144 NewGRF road stops.
Definition: saveload.h:343
SLV_11
@ SLV_11
11.0 2033 11.1 2041
Definition: saveload.h:53
ProcessAsyncSaveFinish
void ProcessAsyncSaveFinish()
Handle async save finishes.
Definition: saveload.cpp:389
REF_ROADSTOPS
@ REF_ROADSTOPS
Load/save a reference to a bus/truck stop.
Definition: saveload.h:588
SLV_30
@ SLV_30
30 5946
Definition: saveload.h:79
FileToSaveLoad::title
std::string title
Internal name of the game.
Definition: saveload.h:398
SLV_93
@ SLV_93
93 12648
Definition: saveload.h:154
SLV_SCRIPT_MEMLIMIT
@ SLV_SCRIPT_MEMLIMIT
215 PR#7516 Limit on AI/GS memory consumption.
Definition: saveload.h:302
SLE_FILE_END
@ SLE_FILE_END
Used to mark end-of-header in tables.
Definition: saveload.h:608
SLV_87
@ SLV_87
87 12129
Definition: saveload.h:147
ChunkHandlerRef
std::reference_wrapper< const ChunkHandler > ChunkHandlerRef
A reference to ChunkHandler.
Definition: saveload.h:491
SLV_99
@ SLV_99
99 13838
Definition: saveload.h:161
SLV_185
@ SLV_185
185 25620 Storybooks
Definition: saveload.h:265
SLV_113
@ SLV_113
113 15340
Definition: saveload.h:178
SLV_152
@ SLV_152
152 21171
Definition: saveload.h:225
StringID
uint32_t StringID
Numeric value that represents a string, independent of the selected language.
Definition: strings_type.h:16
SL_MIN_VERSION
@ SL_MIN_VERSION
First savegame version.
Definition: saveload.h:31
SLV_194
@ SLV_194
194 26881 v1.5
Definition: saveload.h:276
SaveLoadOperation
SaveLoadOperation
Operation performed on the file.
Definition: fileio_type.h:47
FileToSaveLoad::name
std::string name
Name of the file.
Definition: saveload.h:397
SLV_133
@ SLV_133
133 18674
Definition: saveload.h:202
_do_autosave
bool _do_autosave
are we doing an autosave at the moment?
Definition: saveload.cpp:66
GB
constexpr static debug_inline uint GB(const T x, const uint8_t s, const uint8_t n)
Fetch n bits from x, started at bit s.
Definition: bitmath_func.hpp:32
SaveLoad::size
size_t size
The sizeof size.
Definition: saveload.h:704
SLV_105
@ SLV_105
105 14803
Definition: saveload.h:169
SLV_189
@ SLV_189
189 26450 Hierarchical vehicle subgroups
Definition: saveload.h:269
SLV_39
@ SLV_39
39 7269
Definition: saveload.h:89
SLF_ALLOW_NEWLINE
@ SLF_ALLOW_NEWLINE
Allow new lines in the strings.
Definition: saveload.h:671
SLV_EXTEND_VEHICLE_RANDOM
@ SLV_EXTEND_VEHICLE_RANDOM
310 PR#10701 Extend vehicle random bits.
Definition: saveload.h:352
SLV_80
@ SLV_80
80 11228
Definition: saveload.h:139
GenerateDefaultSaveName
std::string GenerateDefaultSaveName()
Get the default name for a savegame or screenshot.
Definition: saveload.cpp:3169
SLV_END_PATCHPACKS
@ SLV_END_PATCHPACKS
286 Last known patchpack to use a version just above ours.
Definition: saveload.h:322
SLV_51
@ SLV_51
51 8978
Definition: saveload.h:104
SLV_ECONOMY_DATE
@ SLV_ECONOMY_DATE
326 PR#10700 Split calendar and economy timers and dates.
Definition: saveload.h:371
SLV_83
@ SLV_83
83 11589
Definition: saveload.h:142
SLV_198
@ SLV_198
198 PR#6763 Switch town growth rate and counter to actual game ticks
Definition: saveload.h:281
SLV_184
@ SLV_184
184 25508 Unit localisation split
Definition: saveload.h:263
SLV_96
@ SLV_96
96 13226
Definition: saveload.h:158
SGT_TTDP1
@ SGT_TTDP1
TTDP savegame ( -//- ) (data at NW border)
Definition: saveload.h:408
FileToSaveLoad
Deals with the type of the savegame, independent of extension.
Definition: saveload.h:393
SLE_VAR_NULL
@ SLE_VAR_NULL
useful to write zeros in savegame.
Definition: saveload.h:635
SaveOrLoad
SaveOrLoadResult SaveOrLoad(const std::string &filename, SaveLoadOperation fop, DetailedFileType dft, Subdirectory sb, bool threaded=true)
Main Save or Load function where the high-level saveload functions are handled.
Definition: saveload.cpp:3052
SlTableHeader
std::vector< SaveLoad > SlTableHeader(const SaveLoadTable &slt)
Save or Load a table header.
Definition: saveload.cpp:1714
SLV_154
@ SLV_154
154 21426
Definition: saveload.h:227
SLV_ROAD_TYPES
@ SLV_ROAD_TYPES
214 PR#6811 NewGRF road types.
Definition: saveload.h:300
SLV_67
@ SLV_67
67 10236
Definition: saveload.h:123
SaveLoadHandler::GetLoadDescription
SaveLoadTable GetLoadDescription() const
Get the description for how to load the chunk.
Definition: saveload.cpp:3248
SLV_47
@ SLV_47
47 8735
Definition: saveload.h:99
SLV_109
@ SLV_109
109 15075
Definition: saveload.h:173
SLV_187
@ SLV_187
187 25899 Linkgraph - restricted flows
Definition: saveload.h:267
ChunkHandler::type
ChunkType type
Type of the chunk.
Definition: saveload.h:447
SLV_138
@ SLV_138
138 18942 1.0.x
Definition: saveload.h:208
SLV_131
@ SLV_131
131 18481
Definition: saveload.h:200
SLV_155
@ SLV_155
155 21453
Definition: saveload.h:229
SaveLoadCompatTable
std::span< const struct SaveLoadCompat > SaveLoadCompatTable
A table of SaveLoadCompat entries.
Definition: saveload.h:500
SLV_192
@ SLV_192
192 26700 FS#6066 Fix saving of order backups
Definition: saveload.h:274
SlVarSize
constexpr size_t SlVarSize(VarType type)
Return expect size in bytes of a VarType.
Definition: saveload.h:763
SlGlobList
void SlGlobList(const SaveLoadTable &slt)
Save or Load (a list of) global variables.
Definition: saveload.cpp:1906
SAVEGAME_VERSION
const SaveLoadVersion SAVEGAME_VERSION
current savegame version
SLV_SERVE_NEUTRAL_INDUSTRIES
@ SLV_SERVE_NEUTRAL_INDUSTRIES
210 PR#7234 Company stations can serve industries with attached neutral stations.
Definition: saveload.h:296
SLV_8
@ SLV_8
8.0 1786
Definition: saveload.h:49
ChunkHandler
Handlers and description of chunk.
Definition: saveload.h:445
SaveLoad::conv
VarType conv
Type of the variable to be saved; this field combines both FileVarType and MemVarType.
Definition: saveload.h:700
SLV_36
@ SLV_36
36 6624
Definition: saveload.h:86
SLV_LAST_LOADING_TICK
@ SLV_LAST_LOADING_TICK
301 PR#9693 Store tick of last loading for vehicles.
Definition: saveload.h:341
SlSetStructListLength
void SlSetStructListLength(size_t length)
Set the length of this list.
Definition: saveload.cpp:1632
SLV_25
@ SLV_25
25 4259
Definition: saveload.h:73
SLV_37
@ SLV_37
37 7182
Definition: saveload.h:87
SLV_167
@ SLV_167
167 23504
Definition: saveload.h:243
SLV_143
@ SLV_143
143 20048
Definition: saveload.h:214
SaveLoadHandler
Handler for saving/loading an object to/from disk.
Definition: saveload.h:503
SLV_169
@ SLV_169
169 23816
Definition: saveload.h:245
SLV_EXTEND_PERSISTENT_STORAGE
@ SLV_EXTEND_PERSISTENT_STORAGE
201 PR#6885 Extend NewGRF persistent storages.
Definition: saveload.h:285
SlGetStructListLength
size_t SlGetStructListLength(size_t limit)
Get the length of this list; if it exceeds the limit, error out.
Definition: saveload.cpp:1648
SLV_174
@ SLV_174
174 23973 1.2.x
Definition: saveload.h:251
SaveLoadCompat::name
std::string name
Name of the field.
Definition: saveload.h:719
SLV_118
@ SLV_118
118 16129
Definition: saveload.h:184
SLE_FILE_TYPE_MASK
@ SLE_FILE_TYPE_MASK
Mask to get the file-type (and not any flags).
Definition: saveload.h:622
SLV_16
@ SLV_16
16.0 2817 16.1 3155
Definition: saveload.h:60
SLV_27
@ SLV_27
27 4757
Definition: saveload.h:75
SLV_SHIPS_STOP_IN_LOCKS
@ SLV_SHIPS_STOP_IN_LOCKS
206 PR#7150 Ship/lock movement changes.
Definition: saveload.h:291
SLV_6
@ SLV_6
6.0 1721 6.1 1768
Definition: saveload.h:46
SlIterateArray
int SlIterateArray()
Iterate through the elements of an array and read the whole thing.
Definition: saveload.cpp:656
SLV_CALENDAR_SUB_DATE_FRACT
@ SLV_CALENDAR_SUB_DATE_FRACT
328 PR#11428 Add sub_date_fract to measure calendar days.
Definition: saveload.h:373
GetSaveLoadErrorString
const char * GetSaveLoadErrorString()
Get the string representation of the error message.
Definition: saveload.cpp:2764
REF_STATION
@ REF_STATION
Load/save a reference to a station.
Definition: saveload.h:585
SlWriteByte
void SlWriteByte(byte b)
Wrapper for writing a byte to the dumper.
Definition: saveload.cpp:414
SLV_102
@ SLV_102
102 14332
Definition: saveload.h:165
SLV_69
@ SLV_69
69 10319
Definition: saveload.h:125
SLV_115
@ SLV_115
115 15695
Definition: saveload.h:181
AbstractFileType
AbstractFileType
The different abstract types of files that the system knows about.
Definition: fileio_type.h:16
SLV_CUSTOM_SUBSIDY_DURATION
@ SLV_CUSTOM_SUBSIDY_DURATION
292 PR#9081 Configurable subsidy duration.
Definition: saveload.h:330
SLV_WATER_REGIONS
@ SLV_WATER_REGIONS
324 PR#10543 Water Regions for ship pathfinder.
Definition: saveload.h:368
FileToSaveLoad::abstract_ftype
AbstractFileType abstract_ftype
Abstract type of file (scenario, heightmap, etc).
Definition: saveload.h:396
SLV_119
@ SLV_119
119 16242
Definition: saveload.h:185
SLV_VELOCITY_NAUTICAL
@ SLV_VELOCITY_NAUTICAL
305 PR#10594 Separation of land and nautical velocity (knots!)
Definition: saveload.h:346
SLV_89
@ SLV_89
89 12160
Definition: saveload.h:149
SlSetLength
void SlSetLength(size_t length)
Sets the length of either a RIFF object or the number of items in an array.
Definition: saveload.cpp:710
SL_SAVEBYTE
@ SL_SAVEBYTE
Save (but not load) a byte.
Definition: saveload.h:690
SLV_26
@ SLV_26
26 4466
Definition: saveload.h:74
SLV_114
@ SLV_114
114 15601
Definition: saveload.h:179
SLV_142
@ SLV_142
142 20003
Definition: saveload.h:213
SLV_188
@ SLV_188
188 26169 v1.4 FS#5831 Unify RV travel time
Definition: saveload.h:268
SLV_REPAIR_OBJECT_DOCKING_TILES
@ SLV_REPAIR_OBJECT_DOCKING_TILES
299 PR#9594 v12.0 Fixing issue with docking tiles overlapping objects.
Definition: saveload.h:338
GetVarMemType
constexpr VarType GetVarMemType(VarType type)
Get the NumberType of a setting.
Definition: saveload.h:732
SLV_172
@ SLV_172
172 23947
Definition: saveload.h:249
SLF_ALLOW_CONTROL
@ SLF_ALLOW_CONTROL
Allow control codes in the strings.
Definition: saveload.h:670
SLE_FILE_HAS_LENGTH_FIELD
@ SLE_FILE_HAS_LENGTH_FIELD
Bit stored in savegame to indicate field has a length field for each entry.
Definition: saveload.h:623
SLV_TIMETABLE_TICKS_TYPE
@ SLV_TIMETABLE_TICKS_TYPE
323 PR#11435 Convert timetable current order time to ticks.
Definition: saveload.h:367
SLV_180
@ SLV_180
180 24998 1.3.x
Definition: saveload.h:259
SLV_14
@ SLV_14
14.0 2441
Definition: saveload.h:57
SLV_124
@ SLV_124
124 16993
Definition: saveload.h:191
SavegameType
SavegameType
Types of save games.
Definition: saveload.h:406
SLV_98
@ SLV_98
98 13375
Definition: saveload.h:160
SLV_159
@ SLV_159
159 21962
Definition: saveload.h:233
IsNumericType
constexpr bool IsNumericType(VarType conv)
Check if the given saveload type is a numeric type.
Definition: saveload.h:753
SLV_125
@ SLV_125
125 17113
Definition: saveload.h:193
SLV_162
@ SLV_162
162 22713
Definition: saveload.h:237
SLV_SHIP_PATH_CACHE
@ SLV_SHIP_PATH_CACHE
203 PR#7072 Add path cache for ships
Definition: saveload.h:287
SLV_41
@ SLV_41
41 7348 0.5.x
Definition: saveload.h:92
SLV_148
@ SLV_148
148 20659
Definition: saveload.h:220
CH_TYPE_MASK
@ CH_TYPE_MASK
All ChunkType values have to be within this mask.
Definition: saveload.h:440
ReadValue
int64_t ReadValue(const void *ptr, VarType conv)
Return a signed-long version of the value of a setting.
Definition: saveload.cpp:791
ChunkHandler::Save
virtual void Save() const
Save the chunk.
Definition: saveload.h:457
CH_READONLY
@ CH_READONLY
Chunk is never saved.
Definition: saveload.h:441
SGT_TTO
@ SGT_TTO
TTO savegame.
Definition: saveload.h:411
SLV_CONSISTENT_PARTIAL_Z
@ SLV_CONSISTENT_PARTIAL_Z
306 PR#10570 Conversion from an inconsistent partial Z calculation for slopes, to one that is (more) ...
Definition: saveload.h:347
SLV_56
@ SLV_56
56 9667
Definition: saveload.h:110
SLV_85
@ SLV_85
85 11874
Definition: saveload.h:145
SetSaveLoadError
void SetSaveLoadError(StringID str)
Set the error message from outside of the actual loading/saving of the game (AfterLoadGame and friend...
Definition: saveload.cpp:2758
IsSavegameVersionBefore
bool IsSavegameVersionBefore(SaveLoadVersion major, byte minor=0)
Checks whether the savegame is below major.
Definition: saveload.h:1215
SLV_EXTEND_INDUSTRY_CARGO_SLOTS
@ SLV_EXTEND_INDUSTRY_CARGO_SLOTS
202 PR#6867 Increase industry cargo slots to 16 in, 16 out
Definition: saveload.h:286
SLV_171
@ SLV_171
171 23835
Definition: saveload.h:248
SL_VAR
@ SL_VAR
Save/load a variable.
Definition: saveload.h:678
SLV_111
@ SLV_111
111 15190
Definition: saveload.h:176
SaveloadCrashWithMissingNewGRFs
bool SaveloadCrashWithMissingNewGRFs()
Did loading the savegame cause a crash? If so, were NewGRFs missing?
Definition: afterload.cpp:351
SLV_135
@ SLV_135
135 18719
Definition: saveload.h:205
WriteValue
void WriteValue(void *ptr, VarType conv, int64_t val)
Write the value of a setting.
Definition: saveload.cpp:815
SLV_TIMETABLE_START_TICKS
@ SLV_TIMETABLE_START_TICKS
321 PR#11468 Convert timetable start from a date to ticks.
Definition: saveload.h:365
SLV_132
@ SLV_132
132 18522
Definition: saveload.h:201
SLV_166
@ SLV_166
166 23415
Definition: saveload.h:242
SLV_81
@ SLV_81
81 11244
Definition: saveload.h:140
SaveLoad::extra_data
size_t extra_data
Extra data for the callback proc.
Definition: saveload.h:706
SLV_LINKGRAPH_TRAVEL_TIME
@ SLV_LINKGRAPH_TRAVEL_TIME
297 PR#9457 v12.0-RC1 Store travel time in the linkgraph.
Definition: saveload.h:336
SLV_150
@ SLV_150
150 20857
Definition: saveload.h:223
SLV_STATION_RATING_CHEAT
@ SLV_STATION_RATING_CHEAT
320 PR#11346 Add cheat to fix station ratings at 100%.
Definition: saveload.h:364
SLV_58
@ SLV_58
58 9762
Definition: saveload.h:112
SL_REINIT
@ SL_REINIT
error that was caught in the middle of updating game state, need to clear it. (can only happen during...
Definition: saveload.h:389
SaveLoad::cmd
SaveLoadType cmd
The action to take with the saved/loaded type, All types need different action.
Definition: saveload.h:699
FiosItem
Deals with finding savegames.
Definition: fios.h:79
SLRefType
SLRefType
Type of reference (SLE_REF, SLE_CONDREF).
Definition: saveload.h:582
SLV_PERIODS_IN_TRANSIT_RENAME
@ SLV_PERIODS_IN_TRANSIT_RENAME
316 PR#11112 Rename days in transit to (cargo) periods in transit.
Definition: saveload.h:359
SLV_GS_INDUSTRY_CONTROL
@ SLV_GS_INDUSTRY_CONTROL
287 PR#7912 and PR#8115 GS industry control.
Definition: saveload.h:324
SLV_MULTITILE_DOCKS
@ SLV_MULTITILE_DOCKS
216 PR#7380 Multiple docks per station.
Definition: saveload.h:303
GetVariableAddress
void * GetVariableAddress(const void *object, const SaveLoad &sld)
Get the address of the variable.
Definition: saveload.h:1253
SlAutolength
void SlAutolength(AutolengthProc *proc, void *arg)
Do something of which I have no idea what it is :P.
Definition: saveload.cpp:1916
SLV_55
@ SLV_55
55 9638
Definition: saveload.h:109
SLV_91
@ SLV_91
91 12347
Definition: saveload.h:152
SLV_VEHICLE_ECONOMY_AGE
@ SLV_VEHICLE_ECONOMY_AGE
334 PR#12141 v14.0 Add vehicle age in economy year, for profit stats minimum age
Definition: saveload.h:380
SLV_182
@ SLV_182
182 25115 FS#5492, r25259, r25296 Goal status
Definition: saveload.h:261
SLV_EXTEND_RAILTYPES
@ SLV_EXTEND_RAILTYPES
200 PR#6805 Extend railtypes to 64, adding uint16_t to map array.
Definition: saveload.h:284
SLV_163
@ SLV_163
163 22767
Definition: saveload.h:238
SLV_INDUSTRY_TEXT
@ SLV_INDUSTRY_TEXT
289 PR#8576 v1.11.0-RC1 Additional GS text for industries.
Definition: saveload.h:326
SLV_165
@ SLV_165
165 23304
Definition: saveload.h:241
IsSavegameVersionBeforeOrAt
bool IsSavegameVersionBeforeOrAt(SaveLoadVersion major)
Checks whether the savegame is below or at major.
Definition: saveload.h:1229
SLV_SAVELOAD_LIST_LENGTH
@ SLV_SAVELOAD_LIST_LENGTH
293 PR#9374 Consistency in list length with SL_STRUCT / SL_STRUCTLIST / SL_DEQUE / SL_REFLIST.
Definition: saveload.h:331
SL_ARR
@ SL_ARR
Save/load a fixed-size array of SL_VAR elements.
Definition: saveload.h:684
SLE_FILE_STRINGID
@ SLE_FILE_STRINGID
StringID offset into strings-array.
Definition: saveload.h:617
SLV_65
@ SLV_65
65 10210
Definition: saveload.h:121
REF_STORAGE
@ REF_STORAGE
Load/save a reference to a persistent storage.
Definition: saveload.h:592
SLV_64
@ SLV_64
64 10006
Definition: saveload.h:119
SLV_53
@ SLV_53
53 9316
Definition: saveload.h:106
SLV_31
@ SLV_31
31 5999
Definition: saveload.h:80
SLV_146
@ SLV_146
146 20446
Definition: saveload.h:218
SLV_116
@ SLV_116
116 15893 0.7.x
Definition: saveload.h:182
SLV_RIFF_TO_ARRAY
@ SLV_RIFF_TO_ARRAY
294 PR#9375 Changed many CH_RIFF chunks to CH_ARRAY chunks.
Definition: saveload.h:332
SL_MAX_VERSION
@ SL_MAX_VERSION
Highest possible saveload version.
Definition: saveload.h:382
REF_ENGINE_RENEWS
@ REF_ENGINE_RENEWS
Load/save a reference to an engine renewal (autoreplace).
Definition: saveload.h:589
SLV_VEH_MOTION_COUNTER
@ SLV_VEH_MOTION_COUNTER
288 PR#8591 Desync safe motion counter
Definition: saveload.h:325
SLV_164
@ SLV_164
164 23290
Definition: saveload.h:239
REF_VEHICLE
@ REF_VEHICLE
Load/save a reference to a vehicle.
Definition: saveload.h:584
SLV_54
@ SLV_54
54 9613
Definition: saveload.h:107
SLV_ECONOMY_MODE_TIMEKEEPING_UNITS
@ SLV_ECONOMY_MODE_TIMEKEEPING_UNITS
327 PR#11341 Mode to display economy measurements in wallclock units.
Definition: saveload.h:372
SL_REF
@ SL_REF
Save/load a reference.
Definition: saveload.h:679
SLV_4
@ SLV_4
4.0 1 4.1 122 0.3.3, 0.3.4 4.2 1222 0.3.5 4.3 1417 4.4 1426
Definition: saveload.h:37
SLV_178
@ SLV_178
178 24789
Definition: saveload.h:256
REF_CARGO_PACKET
@ REF_CARGO_PACKET
Load/save a reference to a cargo packet.
Definition: saveload.h:590
SL_STRUCT
@ SL_STRUCT
Save/load a struct.
Definition: saveload.h:680
SLV_103
@ SLV_103
103 14598
Definition: saveload.h:166
SLV_92
@ SLV_92
92 12381 0.6.x
Definition: saveload.h:153
SLV_DISASTER_VEH_STATE
@ SLV_DISASTER_VEH_STATE
312 PR#10798 Explicit storage of disaster vehicle state.
Definition: saveload.h:354
_file_to_saveload
FileToSaveLoad _file_to_saveload
File to save or load in the openttd loop.
Definition: saveload.cpp:60
REF_VEHICLE_OLD
@ REF_VEHICLE_OLD
Load/save an old-style reference to a vehicle (for pre-4.4 savegames).
Definition: saveload.h:587
SLV_29
@ SLV_29
29 5070
Definition: saveload.h:77
SLV_175
@ SLV_175
175 24136
Definition: saveload.h:253
SLV_66
@ SLV_66
66 10211
Definition: saveload.h:122
ChunkHandler::Load
virtual void Load() const =0
Load the chunk.
_savegame_format
std::string _savegame_format
how to compress savegames
Definition: saveload.cpp:65
DoExitSave
void DoExitSave()
Do a save when exiting the game (_settings_client.gui.autosave_on_exit)
Definition: saveload.cpp:3161
SLV_170
@ SLV_170
170 23826
Definition: saveload.h:247
ChunkHandler::FixPointers
virtual void FixPointers() const
Fix the pointers.
Definition: saveload.h:471
SaveLoad::handler
std::shared_ptr< SaveLoadHandler > handler
Custom handler for Save/Load procs.
Definition: saveload.h:707
SLV_181
@ SLV_181
181 25012
Definition: saveload.h:260
SLV_110
@ SLV_110
110 15148
Definition: saveload.h:175
SLV_173
@ SLV_173
173 23967 1.2.0-RC1
Definition: saveload.h:250
SLV_GROUP_LIVERIES
@ SLV_GROUP_LIVERIES
205 PR#7108 Livery storage change and group liveries.
Definition: saveload.h:290
SLV_84
@ SLV_84
84 11822
Definition: saveload.h:143
SL_VECTOR
@ SL_VECTOR
Save/load a vector of SL_VAR elements.
Definition: saveload.h:686
SaveLoadCompat::version_to
SaveLoadVersion version_to
Save/load the variable before this savegame version.
Definition: saveload.h:723
REF_LINK_GRAPH_JOB
@ REF_LINK_GRAPH_JOB
Load/save a reference to a link graph job.
Definition: saveload.h:594
SLV_120
@ SLV_120
120 16439
Definition: saveload.h:187
SlIsObjectCurrentlyValid
bool SlIsObjectCurrentlyValid(SaveLoadVersion version_from, SaveLoadVersion version_to)
Checks if some version from/to combination falls within the range of the active savegame version.
Definition: saveload.h:1242
SLV_193
@ SLV_193
193 26802
Definition: saveload.h:275
SLV_48
@ SLV_48
48 8935
Definition: saveload.h:100
SaveLoadHandler::GetDescription
virtual SaveLoadTable GetDescription() const =0
Get the description of the fields in the savegame.
SaveLoadHandler::FixPointers
virtual void FixPointers([[maybe_unused]] void *object) const
A post-load callback to fix SL_REF integers into pointers.
Definition: saveload.h:531
SGT_TTD
@ SGT_TTD
TTD savegame (can be detected incorrectly)
Definition: saveload.h:407
SLV_134
@ SLV_134
134 18703
Definition: saveload.h:203
SLV_46
@ SLV_46
46 8705
Definition: saveload.h:98
SLV_94
@ SLV_94
94 12816
Definition: saveload.h:155
SLV_35
@ SLV_35
35 6602
Definition: saveload.h:85
SLV_75
@ SLV_75
75 11107
Definition: saveload.h:133
SLV_45
@ SLV_45
45 8501
Definition: saveload.h:97
SLV_34
@ SLV_34
34 6455
Definition: saveload.h:83
SLV_10
@ SLV_10
10.0 2030
Definition: saveload.h:52
SLV_71
@ SLV_71
71 10567
Definition: saveload.h:128
SaveLoadCompat
SaveLoad information for backwards compatibility.
Definition: saveload.h:718
DoAutoOrNetsave
void DoAutoOrNetsave(FiosNumberedSaveName &counter)
Create an autosave or netsave.
Definition: saveload.cpp:3143
SaveWithFilter
SaveOrLoadResult SaveWithFilter(std::shared_ptr< SaveFilter > writer, bool threaded)
Save the game using a (writer) filter.
Definition: saveload.cpp:2876
FiosNumberedSaveName
A savegame name automatically numbered.
Definition: fios.h:129
REF_ORDERLIST
@ REF_ORDERLIST
Load/save a reference to an orderlist.
Definition: saveload.h:591
SLV_ROADVEH_PATH_CACHE
@ SLV_ROADVEH_PATH_CACHE
211 PR#7261 Add path cache for road vehicles.
Definition: saveload.h:297
DetailedFileType
DetailedFileType
Kinds of files in each AbstractFileType.
Definition: fileio_type.h:28
SaveLoadCompat::null_length
uint16_t null_length
Length of the NULL field.
Definition: saveload.h:721
SLV_FIX_CARGO_MONITOR
@ SLV_FIX_CARGO_MONITOR
207 PR#7175 v1.9 Cargo monitor data packing fix to support 64 cargotypes.
Definition: saveload.h:292
SLV_3
@ SLV_3
3.x lost
Definition: saveload.h:36
SLV_CARGO_TRAVELLED
@ SLV_CARGO_TRAVELLED
319 PR#11283 CargoPacket now tracks how far it travelled inside a vehicle.
Definition: saveload.h:362
SLV_SCRIPT_INT64
@ SLV_SCRIPT_INT64
296 PR#9415 SQInteger is 64bit but was saved as 32bit.
Definition: saveload.h:335
SLV_59
@ SLV_59
59 9779
Definition: saveload.h:113
SLV_24
@ SLV_24
24 4150
Definition: saveload.h:71
SLV_START_PATCHPACKS
@ SLV_START_PATCHPACKS
220 First known patchpack to use a version just above ours.
Definition: saveload.h:321
SL_REFLIST
@ SL_REFLIST
Save/load a list of SL_REF elements.
Definition: saveload.h:687
VarTypes
VarTypes
VarTypes is the general bitmasked magic type that tells us certain characteristics about the variable...
Definition: saveload.h:605
SLV_106
@ SLV_106
106 14919
Definition: saveload.h:170
FileToSaveLoad::Set
void Set(const FiosItem &item)
Set the title of the file.
Definition: saveload.cpp:3241
SLV_149
@ SLV_149
149 20832
Definition: saveload.h:221
SLV_50
@ SLV_50
50 8973
Definition: saveload.h:103
SLV_107
@ SLV_107
107 15027
Definition: saveload.h:171
SLV_1
@ SLV_1
1.0 0.1.x, 0.2.x
Definition: saveload.h:33
SLV_78
@ SLV_78
78 11176
Definition: saveload.h:136
_sl_minor_version
byte _sl_minor_version
the minor savegame version, DO NOT USE!
Definition: saveload.cpp:64
SLV_SHIP_ACCELERATION
@ SLV_SHIP_ACCELERATION
329 PR#10734 Start using Vehicle's acceleration field for ships too.
Definition: saveload.h:374
DefaultSaveLoadHandler::GetDescription
SaveLoadTable GetDescription() const override
Get the description of the fields in the savegame.
Definition: saveload.h:565
SLV_157
@ SLV_157
157 21862
Definition: saveload.h:231
SLV_SHIP_CURVE_PENALTY
@ SLV_SHIP_CURVE_PENALTY
209 PR#7289 Configurable ship curve penalties.
Definition: saveload.h:294
SLV_97
@ SLV_97
97 13256
Definition: saveload.h:159
SLV_139
@ SLV_139
139 19346
Definition: saveload.h:209
SLV_128
@ SLV_128
128 18281
Definition: saveload.h:196
SLV_90
@ SLV_90
90 12293
Definition: saveload.h:151
SLV_136
@ SLV_136
136 18764
Definition: saveload.h:206
SLV_140
@ SLV_140
140 19382
Definition: saveload.h:211
SLV_TOWN_CARGOGEN
@ SLV_TOWN_CARGOGEN
208 PR#6965 New algorithms for town building cargo generation.
Definition: saveload.h:293
SLV_144
@ SLV_144
144 20334
Definition: saveload.h:215
SLV_2
@ SLV_2
2.0 0.3.0 2.1 0.3.1, 0.3.2
Definition: saveload.h:34
SlReadByte
byte SlReadByte()
Wrapper for reading a byte from the buffer.
Definition: saveload.cpp:405
SLV_23
@ SLV_23
23 3915
Definition: saveload.h:70
SLV_21
@ SLV_21
21 3472 0.4.x
Definition: saveload.h:68
SLV_42
@ SLV_42
42 7573
Definition: saveload.h:93
SLV_43
@ SLV_43
43 7642
Definition: saveload.h:94
SLV_108
@ SLV_108
108 15045
Definition: saveload.h:172
DefaultSaveLoadHandler::GetCompatDescription
SaveLoadCompatTable GetCompatDescription() const override
Get the pre-header description of the fields in the savegame.
Definition: saveload.h:566
SLV_22
@ SLV_22
22 3726
Definition: saveload.h:69
SLV_18
@ SLV_18
18 3227
Definition: saveload.h:64
SLV_177
@ SLV_177
177 24619
Definition: saveload.h:255
ChunkHandlerTable
std::span< const ChunkHandlerRef > ChunkHandlerTable
A table of ChunkHandler entries.
Definition: saveload.h:494
SLV_62
@ SLV_62
62 9905
Definition: saveload.h:117
SlSkipBytes
void SlSkipBytes(size_t length)
Read in bytes from the file/data structure but don't do anything with them, discarding them in effect...
Definition: saveload.h:1297
Subdirectory
Subdirectory
The different kinds of subdirectories OpenTTD uses.
Definition: fileio_type.h:108
SLV_13
@ SLV_13
13.1 2080 0.4.0, 0.4.0.1
Definition: saveload.h:56
SLV_82
@ SLV_82
82 11410
Definition: saveload.h:141
SLV_7
@ SLV_7
7.0 1770
Definition: saveload.h:48
SaveLoad::version_from
SaveLoadVersion version_from
Save/load the variable starting from this savegame version.
Definition: saveload.h:702
SlCheckVarSize
constexpr bool SlCheckVarSize(SaveLoadType cmd, VarType type, size_t length, size_t size)
Check if a saveload cmd/type/length entry matches the size of the variable.
Definition: saveload.h:791
SaveLoadHandler::LoadCheck
virtual void LoadCheck([[maybe_unused]] void *object) const
Similar to load, but used only to validate savegames.
Definition: saveload.h:525
SLV_153
@ SLV_153
153 21263
Definition: saveload.h:226
SaveOrLoadResult
SaveOrLoadResult
Save or load result codes.
Definition: saveload.h:386
SLV_183
@ SLV_183
183 25363 Cargodist
Definition: saveload.h:262
SLV_40
@ SLV_40
40 7326
Definition: saveload.h:91
SLV_AI_START_DATE
@ SLV_AI_START_DATE
309 PR#10653 Removal of individual AI start dates and added a generic one.
Definition: saveload.h:350
SLV_147
@ SLV_147
147 20621
Definition: saveload.h:219
FiosType
FiosType
Elements of a file system that are recognized.
Definition: fileio_type.h:67
SLV_STRING_GAMELOG
@ SLV_STRING_GAMELOG
314 PR#10801 Use std::string in gamelog.
Definition: saveload.h:356
SLE_VAR_STRQ
@ SLE_VAR_STRQ
string pointer enclosed in quotes
Definition: saveload.h:637
SaveLoadCompat::null_type
VarTypes null_type
The type associated with the NULL field; defaults to SLE_FILE_U8 to just count bytes.
Definition: saveload.h:720
ChunkType
ChunkType
Type of a chunk.
Definition: saveload.h:433
SLV_SHIP_ROTATION
@ SLV_SHIP_ROTATION
204 PR#7065 Add extra rotation stages for ships.
Definition: saveload.h:288
SLV_130
@ SLV_130
130 18404
Definition: saveload.h:199
SLV_121
@ SLV_121
121 16694
Definition: saveload.h:188
SlGetFieldLength
size_t SlGetFieldLength()
Get the length of the current object.
Definition: saveload.cpp:779
REF_LINK_GRAPH
@ REF_LINK_GRAPH
Load/save a reference to a link graph.
Definition: saveload.h:593
SLV_REMOVE_TOWN_CARGO_CACHE
@ SLV_REMOVE_TOWN_CARGO_CACHE
219 PR#8258 Remove town cargo acceptance and production caches.
Definition: saveload.h:306
SLV_179
@ SLV_179
179 24810
Definition: saveload.h:257
SLV_104
@ SLV_104
104 14735
Definition: saveload.h:167
SLV_145
@ SLV_145
145 20376
Definition: saveload.h:217
SLV_127
@ SLV_127
127 17439
Definition: saveload.h:195
SLV_ENDING_YEAR
@ SLV_ENDING_YEAR
218 PR#7747 v1.10 Configurable ending year.
Definition: saveload.h:305
SLV_197
@ SLV_197
197 27978 v1.8
Definition: saveload.h:280
SLV_9
@ SLV_9
9.0 1909
Definition: saveload.h:50
SL_DEQUE
@ SL_DEQUE
Save/load a deque of SL_VAR elements.
Definition: saveload.h:685
LoadWithFilter
SaveOrLoadResult LoadWithFilter(std::shared_ptr< LoadFilter > reader)
Load the game using a (reader) filter.
Definition: saveload.cpp:3032
ChunkHandler::id
uint32_t id
Unique ID (4 letters).
Definition: saveload.h:446
SLV_195
@ SLV_195
195 27572 v1.6.1
Definition: saveload.h:278
SLV_151
@ SLV_151
151 20918
Definition: saveload.h:224
SLV_WATER_REGION_EVAL_SIMPLIFIED
@ SLV_WATER_REGION_EVAL_SIMPLIFIED
325 PR#11750 Simplified Water Region evaluation.
Definition: saveload.h:370
SLV_DOCK_DOCKINGTILES
@ SLV_DOCK_DOCKINGTILES
298 PR#9578 All tiles around docks may be docking tiles.
Definition: saveload.h:337
SLV_15
@ SLV_15
15.0 2499
Definition: saveload.h:59
SLV_12
@ SLV_12
12.1 2046
Definition: saveload.h:55
SLV_LINKGRAPH_SECONDS
@ SLV_LINKGRAPH_SECONDS
308 PR#10610 Store linkgraph update intervals in seconds instead of days.
Definition: saveload.h:349
SLV_20
@ SLV_20
20 3403
Definition: saveload.h:67
SLV_EXTEND_ENTITY_MAPPING
@ SLV_EXTEND_ENTITY_MAPPING
311 PR#10672 Extend entity mapping range.
Definition: saveload.h:353
SLV_NEWGRF_LAST_SERVICE
@ SLV_NEWGRF_LAST_SERVICE
317 PR#11124 Added stable date_of_last_service to avoid NewGRF trouble.
Definition: saveload.h:360
SlCopy
void SlCopy(void *object, size_t length, VarType conv)
Copy a list of SL_VARs to/from a savegame.
Definition: saveload.cpp:1027
SLV_EXTEND_CARGOTYPES
@ SLV_EXTEND_CARGOTYPES
199 PR#6802 Extend cargotypes to 64
Definition: saveload.h:282
SLV_68
@ SLV_68
68 10266
Definition: saveload.h:124
SLV_95
@ SLV_95
95 12924
Definition: saveload.h:157
SLV_161
@ SLV_161
161 22567
Definition: saveload.h:236
SLV_MULTITRACK_LEVEL_CROSSINGS
@ SLV_MULTITRACK_LEVEL_CROSSINGS
302 PR#9931 v13.0 Multi-track level crossings.
Definition: saveload.h:342
SLV_17
@ SLV_17
17.0 3212 17.1 3218
Definition: saveload.h:62
SLV_129
@ SLV_129
129 18292
Definition: saveload.h:197
SLV_176
@ SLV_176
176 24446
Definition: saveload.h:254
SlCompatTableHeader
std::vector< SaveLoad > SlCompatTableHeader(const SaveLoadTable &slt, const SaveLoadCompatTable &slct)
Load a table header in a savegame compatible way.
Definition: saveload.cpp:1852
SLV_156
@ SLV_156
156 21728
Definition: saveload.h:230
SLV_SAVEGAME_ID
@ SLV_SAVEGAME_ID
313 PR#10719 Add an unique ID to every savegame (used to deduplicate surveys).
Definition: saveload.h:355
SLV_76
@ SLV_76
76 11139
Definition: saveload.h:134
SL_ERROR
@ SL_ERROR
error that was caught before internal structures were modified
Definition: saveload.h:388
FileToSaveLoad::detail_ftype
DetailedFileType detail_ftype
Concrete file type (PNG, BMP, old save, etc).
Definition: saveload.h:395
SLV_126
@ SLV_126
126 17433
Definition: saveload.h:194
SaveLoad::length
uint16_t length
(Conditional) length of the variable (eg. arrays) (max array size is 65536 elements).
Definition: saveload.h:701
SLV_33
@ SLV_33
33 6440
Definition: saveload.h:82
SLV_19
@ SLV_19
19 3396
Definition: saveload.h:65
SLV_TREES_WATER_CLASS
@ SLV_TREES_WATER_CLASS
213 PR#7405 WaterClass update for tree tiles.
Definition: saveload.h:299
SaveLoad::address_proc
SaveLoadAddrProc * address_proc
Callback proc the get the actual variable address in memory.
Definition: saveload.h:705
SLV_SCRIPT_RANDOMIZER
@ SLV_SCRIPT_RANDOMIZER
333 PR#12063 v14.0-RC1 Save script randomizers.
Definition: saveload.h:379
SLV_61
@ SLV_61
61 9892
Definition: saveload.h:116
SaveLoad::name
std::string name
Name of this field (optional, used for tables).
Definition: saveload.h:698
ChunkHandler::LoadCheck
virtual void LoadCheck(size_t len=0) const
Load the chunk for game preview.
Definition: saveload.cpp:1940
SaveLoadHandler::GetCompatDescription
virtual SaveLoadCompatTable GetCompatDescription() const =0
Get the pre-header description of the fields in the savegame.
SLV_TRADING_AGE
@ SLV_TRADING_AGE
217 PR#7780 Configurable company trading age.
Definition: saveload.h:304
SLV_MORE_CARGO_AGE
@ SLV_MORE_CARGO_AGE
307 PR#10596 Track cargo age for a longer period.
Definition: saveload.h:348
SLV_160
@ SLV_160
160 21974 1.1.x
Definition: saveload.h:235
SLV_190
@ SLV_190
190 26547 Separate order travel and wait times
Definition: saveload.h:271
SLV_LINKGRAPH_EDGES
@ SLV_LINKGRAPH_EDGES
304 PR#10314 Explicitly store link graph edges destination, PR#10471 int64_t instead of uint64_t leag...
Definition: saveload.h:344
FileToSaveLoad::SetMode
void SetMode(FiosType ft)
Set the mode and file type of the file to save or load based on the type of file entry at the file sy...
Definition: saveload.cpp:3212
SaveLoad
SaveLoad type struct.
Definition: saveload.h:697
SLV_168
@ SLV_168
168 23637
Definition: saveload.h:244
SLV_112
@ SLV_112
112 15290
Definition: saveload.h:177
SLV_101
@ SLV_101
101 14233
Definition: saveload.h:164
SLV_57
@ SLV_57
57 9691
Definition: saveload.h:111
SLV_TABLE_CHUNKS
@ SLV_TABLE_CHUNKS
295 PR#9322 Introduction of CH_TABLE and CH_SPARSE_TABLE.
Definition: saveload.h:334
SLV_100
@ SLV_100
100 13952
Definition: saveload.h:163
SL_OK
@ SL_OK
completed successfully
Definition: saveload.h:387
SLV_88
@ SLV_88
88 12134
Definition: saveload.h:148
SLV_72
@ SLV_72
72 10601
Definition: saveload.h:129
SaveLoadCompat::version_from
SaveLoadVersion version_from
Save/load the variable starting from this savegame version.
Definition: saveload.h:722
SL_STDSTR
@ SL_STDSTR
Save/load a std::string.
Definition: saveload.h:682
SGT_TTDP2
@ SGT_TTDP2
TTDP savegame in new format (data at SE border)
Definition: saveload.h:409
SLV_DEPOT_UNBUNCHING
@ SLV_DEPOT_UNBUNCHING
331 PR#11945 Allow unbunching shared order vehicles at a depot.
Definition: saveload.h:377
SLV_52
@ SLV_52
52 9066
Definition: saveload.h:105
SLV_MAX_LOAN_FOR_COMPANY
@ SLV_MAX_LOAN_FOR_COMPANY
330 PR#11224 Separate max loan for each company.
Definition: saveload.h:376
_sl_version
SaveLoadVersion _sl_version
the major savegame version identifier
Definition: saveload.cpp:63
SlObject
void SlObject(void *object, const SaveLoadTable &slt)
Main SaveLoad function.
Definition: saveload.cpp:1661
SLV_141
@ SLV_141
141 19799
Definition: saveload.h:212
SLE_VAR_NAME
@ SLE_VAR_NAME
old custom name to be converted to a char pointer
Definition: saveload.h:638
SLV_44
@ SLV_44
44 8144
Definition: saveload.h:95
SLV_122
@ SLV_122
122 16855
Definition: saveload.h:189
SLV_158
@ SLV_158
158 21933
Definition: saveload.h:232
SlCalcObjLength
size_t SlCalcObjLength(const void *object, const SaveLoadTable &slt)
Calculate the size of an object.
Definition: saveload.cpp:1470
SLV_79
@ SLV_79
79 11188
Definition: saveload.h:137
SLV_MAPGEN_SETTINGS_REVAMP
@ SLV_MAPGEN_SETTINGS_REVAMP
290 PR#8891 v1.11 Revamp of some mapgen settings (snow coverage, desert coverage, heightmap height,...
Definition: saveload.h:328
SLV_INDUSTRY_CARGO_REORGANISE
@ SLV_INDUSTRY_CARGO_REORGANISE
315 PR#10853 Industry accepts/produced data reorganised.
Definition: saveload.h:358
FileToSaveLoad::file_op
SaveLoadOperation file_op
File operation to perform.
Definition: saveload.h:394
SLV_117
@ SLV_117
117 16037
Definition: saveload.h:183
SLV_196
@ SLV_196
196 27778 v1.7
Definition: saveload.h:279
GetVarFileType
constexpr VarType GetVarFileType(VarType type)
Get the FileType of a setting.
Definition: saveload.h:743
SL_STRUCTLIST
@ SL_STRUCTLIST
Save/load a list of structs.
Definition: saveload.h:688
SaveLoadHandler::Load
virtual void Load([[maybe_unused]] void *object) const
Load the object from disk.
Definition: saveload.h:519
SLV_TIMETABLE_START_TICKS_FIX
@ SLV_TIMETABLE_START_TICKS_FIX
322 PR#11557 Fix for missing convert timetable start from a date to ticks.
Definition: saveload.h:366
SLV_186
@ SLV_186
186 25833 Objects storage
Definition: saveload.h:266
SLV_AI_LOCAL_CONFIG
@ SLV_AI_LOCAL_CONFIG
332 PR#12003 Config of running AI is stored inside Company.
Definition: saveload.h:378