added rest of save/load code

svn-id: r13737
This commit is contained in:
Paweł Kołodziejski 2004-05-02 12:20:55 +00:00
parent 24ccdb85e9
commit 054acfbbd3
3 changed files with 30 additions and 2 deletions

View File

@ -102,8 +102,10 @@ void IMuseDigital::saveOrLoad(Serializer *ser) {
MKLINE(Track, volFadeDelay, sleInt32, VER(31)),
MKLINE(Track, volFadeUsed, sleByte, VER(31)),
MKLINE(Track, soundId, sleInt32, VER(31)),
MKARRAY(Track, soundName, sleByte, 15, VER(31)),
MKLINE(Track, used, sleByte, VER(31)),
MKLINE(Track, toBeRemoved, sleByte, VER(31)),
MKLINE(Track, souStream, sleByte, VER(31)),
MKLINE(Track, started, sleByte, VER(31)),
MKLINE(Track, priority, sleInt32, VER(31)),
MKLINE(Track, regionOffset, sleInt32, VER(31)),
@ -112,6 +114,7 @@ void IMuseDigital::saveOrLoad(Serializer *ser) {
MKLINE(Track, curRegion, sleInt32, VER(31)),
MKLINE(Track, curHookId, sleInt32, VER(31)),
MKLINE(Track, volGroupId, sleInt32, VER(31)),
MKLINE(Track, soundType, sleInt32, VER(31)),
MKLINE(Track, iteration, sleInt32, VER(31)),
MKLINE(Track, mod, sleInt32, VER(31)),
MKLINE(Track, mixerFlags, sleInt32, VER(31)),
@ -124,8 +127,25 @@ void IMuseDigital::saveOrLoad(Serializer *ser) {
ser->_ref_me = this;
ser->saveLoadEntries(this, mainEntries);
for (i = 0; i < MAX_DIGITAL_TRACKS + MAX_DIGITAL_FADETRACKS; i++)
for (i = 0; i < MAX_DIGITAL_TRACKS + MAX_DIGITAL_FADETRACKS; i++) {
ser->saveLoadEntries(_track[i], trackEntries);
if (!ser->isSaving()) {
if (_track[i]->souStream) {
_track[i]->stream2 = NULL;
_track[i]->stream = NULL;
_track[i]->used = false;
} else {
_track[i]->soundHandle = _sound->openSound(_track[i]->soundId,
_track[i]->soundName, _track[i]->soundType,
_track[i]->volGroupId);
int32 streamBufferSize = _track[i]->iteration;
int freq = _sound->getFreq(_track[i]->soundHandle);
_track[i]->stream2 = NULL;
_track[i]->stream = makeAppendableAudioStream(freq, _track[i]->mixerFlags, streamBufferSize);
_vm->_mixer->playInputStream(&_track[i]->handle, _track[i]->stream, false, _track[i]->vol / 1000, _track[i]->pan, -1);
}
}
}
}
void IMuseDigital::callback() {

View File

@ -52,9 +52,11 @@ private:
bool volFadeUsed; //
int soundId;
char soundName[15];
bool used;
bool toBeRemoved;
bool started;
bool souStream;
int priority;
int32 regionOffset;
int32 trackOffset;
@ -62,6 +64,7 @@ private:
int curRegion;
int curHookId;
int volGroupId;
int soundType;
int iteration;
int mod;
int32 mixerFlags;

View File

@ -107,13 +107,18 @@ void IMuseDigital::startSound(int soundId, const char *soundName, int soundType,
_track[l]->mixerPan = 0;
_track[l]->mixerVol = volume;
_track[l]->toBeRemoved = false;
_track[l]->soundType = soundType;
int bits = 0, freq = 0, channels = 0;
if (input) {
_track[l]->iteration = 0;
_track[l]->souStream = true;
_track[l]->soundName[0] = 0;
// Do nothing here, we already have an audio stream
} else {
_track[l]->souStream = false;
strcpy(_track[l]->soundName, soundName);
_track[l]->soundHandle = _sound->openSound(soundId, soundName, soundType, volGroupId);
if (_track[l]->soundHandle == NULL)
@ -150,7 +155,7 @@ void IMuseDigital::startSound(int soundId, const char *soundName, int soundType,
}
if (input) {
_track[l]->stream2 = input;
_track[l]->stream2 = NULL;
_track[l]->stream = NULL;
_track[l]->started = false;
} else {