[Scummvm-cvs-logs] CVS: residual/imuse imuse.cpp,1.18,1.19 imuse.h,1.19,1.20

Erich Edgar Hoover compholio at users.sourceforge.net
Sun Dec 25 18:37:04 CET 2005


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

Modified Files:
	imuse.cpp imuse.h 
Log Message:
Centralized save/restore system, x86-64 fixes for lua_Save and lua_Restore (should be more portable now), stored screenshots for savegames

Index: imuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse.cpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- imuse.cpp	21 Jul 2005 05:59:35 -0000	1.18
+++ imuse.cpp	26 Dec 2005 02:35:59 -0000	1.19
@@ -20,6 +20,7 @@
 #include "debug.h"
 #include "timer.h"
 #include "engine.h"
+#include "savegame.h"
 
 #include "mixer/mixer.h"
 #include "mixer/audiostream.h"
@@ -81,42 +82,43 @@
 	memset(_attributes, 0, sizeof(_attributes));
 }
 
-void Imuse::restoreState(SaveRestoreFunc) {
+void Imuse::restoreState(SaveGame *savedState) {
 	StackLock lock(_mutex);
 	printf("Imuse::restoreState() started.\n");
 
-	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);
+	savedState->beginSection('IMUS');
+	savedState->readBlock(&_volVoice, sizeof(int32));
+	savedState->readBlock(&_volSfx, sizeof(int32));
+	savedState->readBlock(&_volMusic, sizeof(int32));
+	savedState->readBlock(&_curMusicState, sizeof(int32));
+	savedState->readBlock(&_curMusicSeq, sizeof(int32));
+	savedState->readBlock(_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));
+		savedState->readBlock(&track->pan, sizeof(int32));
+		savedState->readBlock(&track->panFadeDest, sizeof(int32));
+		savedState->readBlock(&track->panFadeDelay, sizeof(int32));
+		savedState->readBlock(&track->panFadeUsed, sizeof(bool));
+		savedState->readBlock(&track->vol, sizeof(int32));
+		savedState->readBlock(&track->volFadeDest, sizeof(int32));
+		savedState->readBlock(&track->volFadeDelay, sizeof(int32));
+		savedState->readBlock(&track->volFadeUsed, sizeof(bool));
+		savedState->readBlock(track->soundName, 32);
+		savedState->readBlock(&track->used, sizeof(bool));
+		savedState->readBlock(&track->toBeRemoved, sizeof(bool));
+		savedState->readBlock(&track->readyToRemove, sizeof(bool));
+		savedState->readBlock(&track->started, sizeof(bool));
+		savedState->readBlock(&track->priority, sizeof(int32));
+		savedState->readBlock(&track->regionOffset, sizeof(int32));
+		savedState->readBlock(&track->dataOffset, sizeof(int32));
+		savedState->readBlock(&track->curRegion, sizeof(int32));
+		savedState->readBlock(&track->curHookId, sizeof(int32));
+		savedState->readBlock(&track->volGroupId, sizeof(int32));
+		savedState->readBlock(&track->iteration, sizeof(int32));
+		savedState->readBlock(&track->mixerFlags, sizeof(int32));
+		savedState->readBlock(&track->mixerVol, sizeof(int32));
+		savedState->readBlock(&track->mixerPan, sizeof(int32));
 
 		if (!track->used)
 			continue;
@@ -137,46 +139,49 @@
 		track->stream = makeAppendableAudioStream(freq, track->mixerFlags, streamBufferSize);
 		g_mixer->playInputStream(&track->handle, track->stream, false, -1, track->mixerVol, track->mixerPan, false);
 	}
+	savedState->endSection();
 	printf("Imuse::restoreState() finished.\n");
 }
 
-void Imuse::saveState(SaveRestoreFunc) {
+void Imuse::saveState(SaveGame *savedState) {
 	StackLock lock(_mutex);
 	printf("Imuse::saveState() started.\n");
 
-	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);
+	savedState->beginSection('IMUS');
+	savedState->writeBlock(&_volVoice, sizeof(int32));
+	savedState->writeBlock(&_volSfx, sizeof(int32));
+	savedState->writeBlock(&_volMusic, sizeof(int32));
+	savedState->writeBlock(&_curMusicState, sizeof(int32));
+	savedState->writeBlock(&_curMusicSeq, sizeof(int32));
+	savedState->writeBlock(_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));
+		savedState->writeBlock(&track->pan, sizeof(int32));
+		savedState->writeBlock(&track->panFadeDest, sizeof(int32));
+		savedState->writeBlock(&track->panFadeDelay, sizeof(int32));
+		savedState->writeBlock(&track->panFadeUsed, sizeof(bool));
+		savedState->writeBlock(&track->vol, sizeof(int32));
+		savedState->writeBlock(&track->volFadeDest, sizeof(int32));
+		savedState->writeBlock(&track->volFadeDelay, sizeof(int32));
+		savedState->writeBlock(&track->volFadeUsed, sizeof(bool));
+		savedState->writeBlock(track->soundName, 32);
+		savedState->writeBlock(&track->used, sizeof(bool));
+		savedState->writeBlock(&track->toBeRemoved, sizeof(bool));
+		savedState->writeBlock(&track->readyToRemove, sizeof(bool));
+		savedState->writeBlock(&track->started, sizeof(bool));
+		savedState->writeBlock(&track->priority, sizeof(int32));
+		savedState->writeBlock(&track->regionOffset, sizeof(int32));
+		savedState->writeBlock(&track->dataOffset, sizeof(int32));
+		savedState->writeBlock(&track->curRegion, sizeof(int32));
+		savedState->writeBlock(&track->curHookId, sizeof(int32));
+		savedState->writeBlock(&track->volGroupId, sizeof(int32));
+		savedState->writeBlock(&track->iteration, sizeof(int32));
+		savedState->writeBlock(&track->mixerFlags, sizeof(int32));
+		savedState->writeBlock(&track->mixerVol, sizeof(int32));
+		savedState->writeBlock(&track->mixerPan, sizeof(int32));
 	}
+	savedState->endSection();
 	printf("Imuse::saveState() finished.\n");
 }
 

Index: imuse.h
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- imuse.h	10 Aug 2005 09:00:45 -0000	1.19
+++ imuse.h	26 Dec 2005 02:35:59 -0000	1.20
@@ -43,6 +43,8 @@
 	char filename[32];
 };
 
+class SaveGame;
+
 class Imuse {
 private:
 
@@ -123,8 +125,8 @@
 	void startMusic(const char *soundName, int hookId, int volume, int pan);
 	void startSfx(const char *soundName, int priority = 127);
 
-	void restoreState(SaveRestoreFunc);
-	void saveState(SaveRestoreFunc);
+	void restoreState(SaveGame *savedState);
+	void saveState(SaveGame *savedState);
 	void resetState();
 
 	void setGroupVoiceVolume(int volume) { _volVoice = volume; }





More information about the Scummvm-git-logs mailing list