aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/kyra3.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/kyra/kyra3.cpp')
-rw-r--r--engines/kyra/kyra3.cpp28
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);
+ }
+ }
+}
}