aboutsummaryrefslogtreecommitdiff
path: root/scumm/imuse_player.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scumm/imuse_player.cpp')
-rw-r--r--scumm/imuse_player.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/scumm/imuse_player.cpp b/scumm/imuse_player.cpp
index 496c90f480..92447a0a86 100644
--- a/scumm/imuse_player.cpp
+++ b/scumm/imuse_player.cpp
@@ -1171,15 +1171,8 @@ void Player::metaEvent(byte type, byte *msg, uint16 len) {
//
////////////////////////////////////////
-enum {
- TYPE_PART = 1,
- TYPE_PLAYER = 2
-};
-
void Player::saveLoadWithSerializer(Serializer *ser) {
- // TODO: Get rid of MKREF usage!
static const SaveLoadEntry playerEntries[] = {
- MKREF(Player, _parts, TYPE_PART, VER(8)),
MKLINE(Player, _active, sleByte, VER(8)),
MKLINE(Player, _id, sleUint16, VER(8)),
MKLINE(Player, _priority, sleByte, VER(8)),
@@ -1230,6 +1223,14 @@ void Player::saveLoadWithSerializer(Serializer *ser) {
}
_music_tick = _parser ? _parser->getTick() : 0;
+ int num;
+ if (ser->isSaving()) {
+ num = (_parts ? (_parts - _se->_parts + 1) : 0);
+ ser->saveUint16(num);
+ } else {
+ num = ser->loadUint16();
+ _parts = (num ? &_se->_parts[num - 1] : 0);
+ }
ser->saveLoadEntries(this, playerEntries);
ser->saveLoadArrayOf(_parameterFaders, ARRAYSIZE(_parameterFaders),
sizeof(ParameterFader), parameterFaderEntries);