[Scummvm-cvs-logs] CVS: residual/imuse imuse.cpp,1.13,1.14

Pawel Kolodziejski aquadran at users.sourceforge.net
Wed Jan 12 06:51:30 CET 2005


Update of /cvsroot/scummvm/residual/imuse
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10488

Modified Files:
	imuse.cpp 
Log Message:
added imuse save/restore support

Index: imuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- imuse.cpp	12 Jan 2005 13:48:29 -0000	1.13
+++ imuse.cpp	12 Jan 2005 14:50:30 -0000	1.14
@@ -81,9 +81,98 @@
 }
 
 void Imuse::restoreState(SaveRestoreFunc) {
+	StackLock lock(_mutex);
+
+	g_engine->savegameGzread(&_volVoice, sizeof(int32));
+	g_engine->savegameGzread(&_volSfx, sizeof(int32));
+	g_engine->savegameGzread(&_volMusic, sizeof(int32));
+	g_engine->savegameGzread(&_curMusicState, sizeof(int32));
+	g_engine->savegameGzread(&_curMusicSeq, sizeof(int32));
+	g_engine->savegameGzread(_attributes, sizeof(int32) * 185);
+
+	for (int l = 0; l < MAX_IMUSE_TRACKS + MAX_IMUSE_FADETRACKS; l++) {
+		Track *track = _track[l];
+		g_engine->savegameGzread(&track->pan, sizeof(int32));
+		g_engine->savegameGzread(&track->panFadeDest, sizeof(int32));
+		g_engine->savegameGzread(&track->panFadeDelay, sizeof(int32));
+		g_engine->savegameGzread(&track->panFadeUsed, sizeof(bool));
+		g_engine->savegameGzread(&track->vol, sizeof(int32));
+		g_engine->savegameGzread(&track->volFadeDest, sizeof(int32));
+		g_engine->savegameGzread(&track->volFadeDelay, sizeof(int32));
+		g_engine->savegameGzread(&track->volFadeUsed, sizeof(bool));
+		g_engine->savegameGzread(track->soundName, 32);
+		g_engine->savegameGzread(&track->used, sizeof(bool));
+		g_engine->savegameGzread(&track->toBeRemoved, sizeof(bool));
+		g_engine->savegameGzread(&track->readyToRemove, sizeof(bool));
+		g_engine->savegameGzread(&track->started, sizeof(bool));
+		g_engine->savegameGzread(&track->priority, sizeof(int32));
+		g_engine->savegameGzread(&track->regionOffset, sizeof(int32));
+		g_engine->savegameGzread(&track->dataOffset, sizeof(int32));
+		g_engine->savegameGzread(&track->curRegion, sizeof(int32));
+		g_engine->savegameGzread(&track->curHookId, sizeof(int32));
+		g_engine->savegameGzread(&track->volGroupId, sizeof(int32));
+		g_engine->savegameGzread(&track->iteration, sizeof(int32));
+		g_engine->savegameGzread(&track->mixerFlags, sizeof(int32));
+		g_engine->savegameGzread(&track->mixerVol, sizeof(int32));
+		g_engine->savegameGzread(&track->mixerPan, sizeof(int32));
+
+		if (!track->used)
+			continue;
+
+		track->readyToRemove = false;
+		if (track->toBeRemoved) {
+			track->stream = NULL;
+			track->used = false;
+			continue;
+		}
+
+		track->soundHandle = _sound->openSound(track->soundName, track->volGroupId);
+		assert(track->soundHandle);
+
+		int32 streamBufferSize = track->iteration;
+		int	freq = _sound->getFreq(track->soundHandle);
+
+		track->stream = makeAppendableAudioStream(freq, track->mixerFlags, streamBufferSize);
+		g_mixer->playInputStream(&track->handle, track->stream, false, -1, track->mixerVol, track->mixerPan, false);
+	}
 }
 
 void Imuse::saveState(SaveRestoreFunc) {
+	StackLock lock(_mutex);
+
+	g_engine->savegameGzwrite(&_volVoice, sizeof(int32));
+	g_engine->savegameGzwrite(&_volSfx, sizeof(int32));
+	g_engine->savegameGzwrite(&_volMusic, sizeof(int32));
+	g_engine->savegameGzwrite(&_curMusicState, sizeof(int32));
+	g_engine->savegameGzwrite(&_curMusicSeq, sizeof(int32));
+	g_engine->savegameGzwrite(_attributes, sizeof(int32) * 185);
+
+	for (int l = 0; l < MAX_IMUSE_TRACKS + MAX_IMUSE_FADETRACKS; l++) {
+		Track *track = _track[l];
+		g_engine->savegameGzwrite(&track->pan, sizeof(int32));
+		g_engine->savegameGzwrite(&track->panFadeDest, sizeof(int32));
+		g_engine->savegameGzwrite(&track->panFadeDelay, sizeof(int32));
+		g_engine->savegameGzwrite(&track->panFadeUsed, sizeof(bool));
+		g_engine->savegameGzwrite(&track->vol, sizeof(int32));
+		g_engine->savegameGzwrite(&track->volFadeDest, sizeof(int32));
+		g_engine->savegameGzwrite(&track->volFadeDelay, sizeof(int32));
+		g_engine->savegameGzwrite(&track->volFadeUsed, sizeof(bool));
+		g_engine->savegameGzwrite(track->soundName, 32);
+		g_engine->savegameGzwrite(&track->used, sizeof(bool));
+		g_engine->savegameGzwrite(&track->toBeRemoved, sizeof(bool));
+		g_engine->savegameGzwrite(&track->readyToRemove, sizeof(bool));
+		g_engine->savegameGzwrite(&track->started, sizeof(bool));
+		g_engine->savegameGzwrite(&track->priority, sizeof(int32));
+		g_engine->savegameGzwrite(&track->regionOffset, sizeof(int32));
+		g_engine->savegameGzwrite(&track->dataOffset, sizeof(int32));
+		g_engine->savegameGzwrite(&track->curRegion, sizeof(int32));
+		g_engine->savegameGzwrite(&track->curHookId, sizeof(int32));
+		g_engine->savegameGzwrite(&track->volGroupId, sizeof(int32));
+		g_engine->savegameGzwrite(&track->iteration, sizeof(int32));
+		g_engine->savegameGzwrite(&track->mixerFlags, sizeof(int32));
+		g_engine->savegameGzwrite(&track->mixerVol, sizeof(int32));
+		g_engine->savegameGzwrite(&track->mixerPan, sizeof(int32));
+	}
 }
 
 void Imuse::callback() {





More information about the Scummvm-git-logs mailing list