diff options
Diffstat (limited to 'src/saveload.cpp')
-rw-r--r-- | src/saveload.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/saveload.cpp b/src/saveload.cpp index 26dc7df51..420e5e98a 100644 --- a/src/saveload.cpp +++ b/src/saveload.cpp @@ -744,6 +744,7 @@ size_t SlCalcObjMemberLength(const void *object, const SaveLoad *sld) default: NOT_REACHED(); } break; + case SL_WRITEBYTE: return 1; // a byte is logically of size 1 case SL_INCLUDE: return SlCalcObjLength(object, _sl.includes[sld->version_from]); default: NOT_REACHED(); } @@ -781,6 +782,19 @@ bool SlObjectMember(void *ptr, const SaveLoad *sld) } break; + /* SL_WRITEBYTE translates a value of a variable to another one upon + * saving or loading. + * XXX - variable renaming abuse + * game_value: the value of the variable ingame is abused by sld->version_from + * file_value: the value of the variable in the savegame is abused by sld->version_to */ + case SL_WRITEBYTE: + if (_sl.save) { + SlWriteByte(sld->version_to); + } else { + *(byte*)ptr = sld->version_from; + } + break; + /* SL_INCLUDE loads common code for a type * XXX - variable renaming abuse * include_index: common code to include from _desc_includes[], abused by sld->version_from */ |