[Scummvm-cvs-logs] SF.net SVN: scummvm:[41702] scummvm/trunk/engines/cruise
dreammaster at users.sourceforge.net
dreammaster at users.sourceforge.net
Sat Jun 20 10:15:01 CEST 2009
Revision: 41702
http://scummvm.svn.sourceforge.net/scummvm/?rev=41702&view=rev
Author: dreammaster
Date: 2009-06-20 08:15:01 +0000 (Sat, 20 Jun 2009)
Log Message:
-----------
Added proper saving of music state to savegames so music resumes when a savegame is loaded.
Modified Paths:
--------------
scummvm/trunk/engines/cruise/saveload.cpp
scummvm/trunk/engines/cruise/sound.cpp
scummvm/trunk/engines/cruise/sound.h
Modified: scummvm/trunk/engines/cruise/saveload.cpp
===================================================================
--- scummvm/trunk/engines/cruise/saveload.cpp 2009-06-20 07:36:12 UTC (rev 41701)
+++ scummvm/trunk/engines/cruise/saveload.cpp 2009-06-20 08:15:01 UTC (rev 41702)
@@ -820,6 +820,7 @@
printInfoBlackBox("Loading in progress...");
initVars();
+ _vm->sound().stopMusic();
// Skip over the savegame header
CruiseSavegameHeader header;
@@ -928,8 +929,6 @@
currentcellHead = currentcellHead->next;
}
- //TODO: here, restart music
-
if (strlen(currentCtpName)) {
loadCtFromSave = 1;
initCt(currentCtpName);
Modified: scummvm/trunk/engines/cruise/sound.cpp
===================================================================
--- scummvm/trunk/engines/cruise/sound.cpp 2009-06-20 07:36:12 UTC (rev 41701)
+++ scummvm/trunk/engines/cruise/sound.cpp 2009-06-20 08:15:01 UTC (rev 41702)
@@ -211,6 +211,9 @@
uint8 numOrders() const { assert(_sfxData); return _sfxData[470]; }
void setNumOrders(uint8 v) { assert(_sfxData); _sfxData[470] = v; }
void setPattern(int offset, uint8 value) { assert(_sfxData); _sfxData[472 + offset] = value; }
+ const char *musicName() { return _musicName; }
+
+ // Note: Original game never actually uses looping variable. Songs are hardcoded to loop
bool looping() const { return _looping; }
void setLooping(bool v) { _looping = v; }
};
@@ -701,8 +704,20 @@
s.syncBytes((byte *)_musicName, 33);
uint16 v = (uint16)songLoaded();
s.syncAsSint16LE(v);
+
+ if (s.isLoading() && v) {
+ load(_musicName);
+
+ for (int i = 0; i < NUM_CHANNELS; ++i) {
+ _instrumentsChannelTable[i] = -1;
+ }
+ }
+
s.syncAsSint16LE(_songPlayed);
s.syncAsSint16LE(_looping);
+ s.syncAsSint16LE(_currentPos);
+ s.syncAsSint16LE(_currentOrder);
+ s.syncAsSint16LE(_playing);
}
PCSound::PCSound(Audio::Mixer *mixer, CruiseEngine *vm) {
@@ -791,7 +806,6 @@
void PCSound::musicLoop(bool v) {
_player->setLooping(v);
- warning("TODO: set music looping");
}
void PCSound::startNote(int channel, int volume, int speed) {
@@ -815,9 +829,11 @@
}
void PCSound::doSync(Common::Serializer &s) {
- warning("TODO: doSync fx properties");
_player->doSync(s);
-// _soundDriver->doSync(s);
}
+const char *PCSound::musicName() {
+ return _player->musicName();
+}
+
} // End of namespace Cruise
Modified: scummvm/trunk/engines/cruise/sound.h
===================================================================
--- scummvm/trunk/engines/cruise/sound.h 2009-06-20 07:36:12 UTC (rev 41701)
+++ scummvm/trunk/engines/cruise/sound.h 2009-06-20 08:15:01 UTC (rev 41702)
@@ -59,6 +59,7 @@
virtual void stopSound(int channel);
void doSync(Common::Serializer &s);
+ const char *musicName();
void stopChannel(int channel);
bool isPlaying() const;
bool songLoaded() const;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list