- Revised abstract AudioCDManager.

- Removed AudioCDManager Singleton, and changed code for using AudioCDManager in OSystem.
- Added initialization code for new AudioCDManager in BaseBackend and OSystem_SDL.

svn-id: r49548
This commit is contained in:
Alejandro Marzini 2010-06-09 20:09:57 +00:00
parent 4177a1e16d
commit e991cd8c53
36 changed files with 116 additions and 495 deletions

View file

@ -42,7 +42,6 @@
#include "scumm/he/sprite_he.h"
#include "scumm/verbs.h"
#include "sound/audiocd.h"
#include "sound/mixer.h"
#include "graphics/thumbnail.h"
@ -1099,7 +1098,7 @@ void ScummEngine::saveOrLoad(Serializer *s) {
// as AudioCDManager::Status::playing, and MSVC6 has
// a fit with that. This typedef simplifies the notation
// to something MSVC6 can grasp.
typedef Audio::AudioCDManager::Status AudioCDManager_Status;
typedef AudioCDManager::Status AudioCDManager_Status;
const SaveLoadEntry audioCDEntries[] = {
MKLINE(AudioCDManager_Status, playing, sleUint32, VER(24)),
MKLINE(AudioCDManager_Status, track, sleInt32, VER(24)),
@ -1371,15 +1370,15 @@ void ScummEngine::saveOrLoad(Serializer *s) {
// Save/load the Audio CD status
//
if (s->getVersion() >= VER(24)) {
Audio::AudioCDManager::Status info;
AudioCDManager::Status info;
if (s->isSaving())
info = AudioCD.getStatus();
info = _system->getAudioCD()->getStatus();
s->saveLoadArrayOf(&info, 1, sizeof(info), audioCDEntries);
// If we are loading, and the music being loaded was supposed to loop
// forever, then resume playing it. This helps a lot when the audio CD
// is used to provide ambient music (see bug #788195).
if (s->isLoading() && info.playing && info.numLoops < 0)
AudioCD.play(info.track, info.numLoops, info.start, info.duration);
_system->getAudioCD()->play(info.track, info.numLoops, info.start, info.duration);
}