Added ParameterFader into savegame format.

Savegames are now version 17 (VER_V17).

svn-id: r7808
This commit is contained in:
Jamieson Christian 2003-05-21 21:38:03 +00:00
parent c394046d66
commit 2612a8f817
2 changed files with 22 additions and 9 deletions

View file

@ -3026,6 +3026,7 @@ int IMuseInternal::save_or_load(Serializer *ser, Scumm *scumm) {
MKEND() MKEND()
}; };
// VolumeFader is obsolete.
const SaveLoadEntry volumeFaderEntries[] = { const SaveLoadEntry volumeFaderEntries[] = {
MK_OBSOLETE_REF(VolumeFader, player, TYPE_PLAYER, VER_V8, VER_V16), MK_OBSOLETE_REF(VolumeFader, player, TYPE_PLAYER, VER_V8, VER_V16),
MK_OBSOLETE(VolumeFader, active, sleUint8, VER_V8, VER_V16), MK_OBSOLETE(VolumeFader, active, sleUint8, VER_V8, VER_V16),
@ -3039,6 +3040,15 @@ int IMuseInternal::save_or_load(Serializer *ser, Scumm *scumm) {
MKEND() MKEND()
}; };
const SaveLoadEntry parameterFaderEntries[] = {
MKLINE(ParameterFader, param, sleInt16, VER_V17),
MKLINE(ParameterFader, start, sleInt16, VER_V17),
MKLINE(ParameterFader, end, sleInt16, VER_V17),
MKLINE(ParameterFader, total_time, sleUint32, VER_V17),
MKLINE(ParameterFader, current_time, sleUint32, VER_V17),
MKEND()
};
const SaveLoadEntry partEntries[] = { const SaveLoadEntry partEntries[] = {
MKREF(Part, _next, TYPE_PART, VER_V8), MKREF(Part, _next, TYPE_PART, VER_V8),
MKREF(Part, _prev, TYPE_PART, VER_V8), MKREF(Part, _prev, TYPE_PART, VER_V8),
@ -3071,16 +3081,21 @@ int IMuseInternal::save_or_load(Serializer *ser, Scumm *scumm) {
#endif #endif
int i;
ser->_ref_me = this; ser->_ref_me = this;
ser->_save_ref = saveReference; ser->_save_ref = saveReference;
ser->_load_ref = loadReference; ser->_load_ref = loadReference;
ser->saveLoadEntries(this, mainEntries); ser->saveLoadEntries(this, mainEntries);
ser->saveLoadArrayOf(_players, ARRAYSIZE(_players), sizeof(_players[0]), playerEntries); for (i = 0; i < ARRAYSIZE(_players); ++i) {
ser->saveLoadEntries (&_players[i], playerEntries);
ser->saveLoadArrayOf (_players[i]._parameterFaders, ARRAYSIZE(_players[i]._parameterFaders),
sizeof(ParameterFader), parameterFaderEntries);
}
ser->saveLoadArrayOf(_parts, ARRAYSIZE(_parts), sizeof(_parts[0]), partEntries); ser->saveLoadArrayOf(_parts, ARRAYSIZE(_parts), sizeof(_parts[0]), partEntries);
{ // Load/save the instrument definitions, which were revamped with V11. { // Load/save the instrument definitions, which were revamped with V11.
int i;
Part *part = &_parts[0]; Part *part = &_parts[0];
if (ser->getVersion() >= VER_V11) { if (ser->getVersion() >= VER_V11) {
for (i = ARRAYSIZE(_parts); i; --i, ++part) { for (i = ARRAYSIZE(_parts); i; --i, ++part) {
@ -3093,11 +3108,8 @@ int IMuseInternal::save_or_load(Serializer *ser, Scumm *scumm) {
} }
// VolumeFader has been replaced with the more generic ParameterFader. // VolumeFader has been replaced with the more generic ParameterFader.
{ for (i = 0; i < 8; ++i)
int i; ser->saveLoadEntries (0, volumeFaderEntries);
for (i = 0; i < 8; ++i)
ser->saveLoadEntries (0, volumeFaderEntries);
}
if (!ser->isSaving()) { if (!ser->isSaving()) {
// Load all sounds that we need // Load all sounds that we need

View file

@ -35,10 +35,11 @@ enum {
VER_V13, VER_V13,
VER_V14, VER_V14,
VER_V15, VER_V15,
VER_V16 VER_V16,
VER_V17
}; };
#define CURRENT_VER VER_V16 #define CURRENT_VER VER_V17
// To work around a warning in GCC 3.2 (and 3.1 ?) regarding non-POD types, // To work around a warning in GCC 3.2 (and 3.1 ?) regarding non-POD types,