diff options
Diffstat (limited to 'engines/kyra/kyra3.cpp')
-rw-r--r-- | engines/kyra/kyra3.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/engines/kyra/kyra3.cpp b/engines/kyra/kyra3.cpp index 8fd45d9137..908040686c 100644 --- a/engines/kyra/kyra3.cpp +++ b/engines/kyra/kyra3.cpp @@ -23,11 +23,15 @@ #include "kyra/kyra.h" #include "kyra/screen.h" #include "kyra/wsamovie.h" +#include "kyra/sound.h" #include "common/system.h" namespace Kyra { KyraEngine_v3::KyraEngine_v3(OSystem *system) : KyraEngine(system) { + _soundDigital = 0; + _musicSoundChannel = -1; + _menuAudioFile = "TITLE1.AUD"; } KyraEngine_v3::~KyraEngine_v3() { @@ -37,6 +41,16 @@ Movie *KyraEngine_v3::createWSAMovie() { return new WSAMovieV3(this); } +int KyraEngine_v3::init() { + KyraEngine::init(); + + _soundDigital = new SoundDigital(this, _mixer); + assert(_soundDigital); + assert(_soundDigital->init()); + + return 0; +} + int KyraEngine_v3::go() { _screen->_curPage = 0; _screen->clearPage(0); @@ -54,6 +68,7 @@ int KyraEngine_v3::go() { _screen->setScreenPalette(pal); // XXX + playMenuAudioFile(); logo->setX(0); logo->setY(0); logo->setDrawPage(0); @@ -61,6 +76,7 @@ int KyraEngine_v3::go() { uint32 nextRun = _system->getMillis() + 3 * _tickLength; logo->displayFrame(i); _screen->updateScreen(); + playMenuAudioFile(); delayUntil(nextRun); } @@ -68,6 +84,7 @@ int KyraEngine_v3::go() { uint32 nextRun = _system->getMillis() + 3 * _tickLength; logo->displayFrame(i); _screen->updateScreen(); + playMenuAudioFile(); delayUntil(nextRun); } @@ -75,4 +92,15 @@ int KyraEngine_v3::go() { return 0; } + +void KyraEngine_v3::playMenuAudioFile() { + if (!_soundDigital->isPlaying(_musicSoundChannel)) { + Common::File *handle = new Common::File(); + uint32 temp = 0; + _res->fileHandle(_menuAudioFile, &temp, *handle); + if (handle->isOpen()) { + _musicSoundChannel = _soundDigital->playSound(handle, -1); + } + } +} } |