aboutsummaryrefslogtreecommitdiff
path: root/engines/supernova/supernova.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/supernova/supernova.cpp')
-rw-r--r--engines/supernova/supernova.cpp44
1 files changed, 14 insertions, 30 deletions
diff --git a/engines/supernova/supernova.cpp b/engines/supernova/supernova.cpp
index 248fb2a818..7ac8d59245 100644
--- a/engines/supernova/supernova.cpp
+++ b/engines/supernova/supernova.cpp
@@ -42,6 +42,7 @@
#include "graphics/thumbnail.h"
#include "gui/saveload.h"
+#include "supernova/sound.h"
#include "supernova/supernova.h"
#include "supernova/state.h"
@@ -130,6 +131,7 @@ SupernovaEngine::~SupernovaEngine() {
delete _currentImage;
delete _console;
delete _gm;
+ delete _sound;
delete _soundMusicIntro;
delete _soundMusicOutro;
}
@@ -145,12 +147,13 @@ Common::Error SupernovaEngine::run() {
if (status.getCode() != Common::kNoError)
return status;
- _gm = new GameManager(this);
- _console = new Console(this, _gm);
-
initData();
initPalette();
+ _sound = new Sound(this, _mixer);
+ _gm = new GameManager(this, _sound);
+ _console = new Console(this, _gm);
+
CursorMan.replaceCursor(_mouseNormal, 16, 16, 0, 0, kColorCursorTransparent);
CursorMan.replaceCursorPalette(initVGAPalette, 0, 16);
CursorMan.showMouse(true);
@@ -174,7 +177,7 @@ Common::Error SupernovaEngine::run() {
_system->delayMillis(end);
}
- stopSound();
+ _mixer->stopAll();
return Common::kNoError;
}
@@ -283,8 +286,8 @@ void SupernovaEngine::initData() {
file.close();
}
- _soundMusicIntro = convertToMod("msn_data.049");
- _soundMusicOutro = convertToMod("msn_data.052");
+ _soundMusicIntro = convertToMod("msn_data.052");
+ _soundMusicOutro = convertToMod("msn_data.049");
// Cursor
const uint16 *bufferNormal = reinterpret_cast<const uint16 *>(mouseNormal);
@@ -309,34 +312,15 @@ void SupernovaEngine::initPalette() {
}
void SupernovaEngine::playSound(AudioIndex sample) {
- if (sample > kAudioNumSamples - 1)
- return;
-
- Audio::SeekableAudioStream *audioStream = Audio::makeRawStream(
- _soundSamples[sample]._buffer, _soundSamples[sample]._length,
- 11931, Audio::FLAG_UNSIGNED | Audio::FLAG_LITTLE_ENDIAN, DisposeAfterUse::NO);
- stopSound();
- _mixer->playStream(Audio::Mixer::kPlainSoundType, &_soundHandle, audioStream);
+ _sound->play(sample);
}
-void SupernovaEngine::stopSound() {
- if (_mixer->isSoundHandleActive(_soundHandle))
- _mixer->stopHandle(_soundHandle);
+void SupernovaEngine::stopAudio() {
+ _sound->stop();
}
-void SupernovaEngine::playSoundMod(int filenumber)
-{
- Audio::AudioStream *audioStream;
- if (filenumber == 49)
- audioStream = Audio::makeProtrackerStream(_soundMusicIntro);
- else if (filenumber == 52)
- audioStream = Audio::makeProtrackerStream(_soundMusicOutro);
- else
- return;
-
- stopSound();
- _mixer->playStream(Audio::Mixer::kMusicSoundType, &_soundHandle, audioStream,
- -1, Audio::Mixer::kMaxChannelVolume, 0);
+void SupernovaEngine::playSound(MusicIndex index) {
+ _sound->play(index);
}
void SupernovaEngine::renderImageSection(int section) {