Fix to instrument load/save

svn-id: r6051
This commit is contained in:
Jamieson Christian 2002-12-21 23:19:42 +00:00
parent e4b1a7e709
commit 01ffb7bec2
2 changed files with 13 additions and 8 deletions

View file

@ -3094,14 +3094,18 @@ int IMuseInternal::save_or_load(Serializer *ser, Scumm *scumm)
ser->saveLoadArrayOf(_players, ARRAYSIZE(_players), sizeof(_players[0]), playerEntries); ser->saveLoadArrayOf(_players, ARRAYSIZE(_players), sizeof(_players[0]), playerEntries);
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.
if (ser->getVersion() >= VER_V11) {
int i; int i;
Part *part = &_parts[0]; Part *part = &_parts[0];
if (ser->getVersion() >= VER_V11) {
for (i = ARRAYSIZE(_parts); i; --i, ++part) { for (i = ARRAYSIZE(_parts); i; --i, ++part) {
part->_program = 255; part->_program = 255;
part->_instrument.saveOrLoad (ser); part->_instrument.saveOrLoad (ser);
} }
} else {
for (i = ARRAYSIZE(_parts); i; --i, ++part)
part->_instrument.clear();
}
} }
ser->saveLoadArrayOf(_volume_fader, ARRAYSIZE(_volume_fader), ser->saveLoadArrayOf(_volume_fader, ARRAYSIZE(_volume_fader),

View file

@ -286,8 +286,8 @@ void Instrument::saveOrLoad (Serializer *s)
_instrument->saveOrLoad (s); _instrument->saveOrLoad (s);
} else { } else {
clear(); clear();
byte type = s->loadByte(); _type = s->loadByte();
switch (type) { switch (_type) {
case itNone: case itNone:
break; break;
case itProgram: case itProgram:
@ -300,7 +300,8 @@ void Instrument::saveOrLoad (Serializer *s)
_instrument = new Instrument_Roland (s); _instrument = new Instrument_Roland (s);
break; break;
default: default:
warning ("No known instrument classification #%d", (int) type); warning ("No known instrument classification #%d", (int) _type);
_type = itNone;
} }
} }
} }