summaryrefslogtreecommitdiff
path: root/src/saveload.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-06-07 12:37:48 +0000
committerrubidium <rubidium@openttd.org>2007-06-07 12:37:48 +0000
commit622a4d10b92e5ab843a9f9989cc36b8e2705e492 (patch)
treeead0e50ca3c1bb5247c4dfc6369a2016562e7867 /src/saveload.cpp
parent9a81f009a0171de66dcd4e7fb8e177d48b00b2b2 (diff)
downloadopenttd-622a4d10b92e5ab843a9f9989cc36b8e2705e492.tar.xz
(svn r10056) -Revert (r10049): removing SLE_WRITEBYTE didn't work as expected :(. Somehow SlIterateArray and SlObject depend on eachother and adding a some arbitrary data before the SlObject makes it go crazy.
Diffstat (limited to 'src/saveload.cpp')
-rw-r--r--src/saveload.cpp14
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 */