From 42894542330d79990b340fb5425b71ac7eaf140e Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 16 Sep 2016 23:27:26 -0400 Subject: XEEN: Cleanup of Sound driver --- engines/xeen/combat.cpp | 11 ++- engines/xeen/dialogs_items.cpp | 5 +- engines/xeen/dialogs_options.cpp | 5 +- engines/xeen/dialogs_spells.cpp | 10 ++- engines/xeen/interface.cpp | 20 ++---- engines/xeen/scripts.cpp | 5 +- engines/xeen/sound.cpp | 41 +++++------ engines/xeen/sound.h | 44 ++++-------- engines/xeen/town.cpp | 96 +++++++++++-------------- engines/xeen/worldofxeen/darkside_cutscenes.cpp | 43 ++++------- engines/xeen/xeen.cpp | 1 - 11 files changed, 107 insertions(+), 174 deletions(-) diff --git a/engines/xeen/combat.cpp b/engines/xeen/combat.cpp index be7ade8877..c8e912c85e 100644 --- a/engines/xeen/combat.cpp +++ b/engines/xeen/combat.cpp @@ -799,8 +799,7 @@ void Combat::doMonsterTurn(int monsterId) { intf.draw3d(true); intf.draw3d(true); - File f(Common::String::format("%s.voc", monsterData._attackVoc.c_str())); - sound.playSample(&f, 0); + sound.playSound(Common::String::format("%s.voc", monsterData._attackVoc.c_str())); monsterId = monster._spriteId; } @@ -1386,7 +1385,7 @@ void Combat::attack2(int damage, RangeType rangeType) { damage = 0; if (!damage) { - sound.playSample(&_missVoc, 1); + sound.playSound(_missVoc, 1); sound.playFX(6); } else { if (!isDarkCc && monster._spriteId == 89) @@ -1449,17 +1448,17 @@ void Combat::attack2(int damage, RangeType rangeType) { } if (damage < 1) { - sound.playSample(&_missVoc, 1); + sound.playSound(_missVoc, 1); sound.playFX(6); } else { _monsterScale[_monsterIndex] = getDamageScale(damage); intf.draw3d(true); - sound.playSample(nullptr, 0); + sound.stopSound(); File powVoc(Common::String::format("pow%d.voc", POW_WEAPON_VOCS[_attackWeaponId])); sound.playFX(60 + POW_WEAPON_VOCS[_attackWeaponId]); - sound.playSample(&powVoc, 1); + sound.playSound(powVoc, 1); if (monster._hp > damage) { monster._hp -= damage; diff --git a/engines/xeen/dialogs_items.cpp b/engines/xeen/dialogs_items.cpp index 59bf35dfb8..ed9f7f560d 100644 --- a/engines/xeen/dialogs_items.cpp +++ b/engines/xeen/dialogs_items.cpp @@ -907,9 +907,8 @@ int ItemsDialog::doItemOptions(Character &c, int actionIndex, int itemIndex, Ite desc.c_str(), cost))) { if (party.subtract(0, cost, 0, WT_FREEZE_WAIT)) { if (isDarkCc) { - sound.playSample(0, 0); - File f("choice2.voc"); - sound.playSample(&f, 0); + sound.stopSound(); + sound.playSound("choice2.voc"); } // Add entry to the end of the list diff --git a/engines/xeen/dialogs_options.cpp b/engines/xeen/dialogs_options.cpp index 72445bf055..b2390e344f 100644 --- a/engines/xeen/dialogs_options.cpp +++ b/engines/xeen/dialogs_options.cpp @@ -123,7 +123,6 @@ void OptionsMenu::showTitles2() { EventsManager &events = *_vm->_events; Sound &sound = *_vm->_sound; - File voc("elect.voc"); SpriteResource titleSprites("title2b.raw"); SpriteResource kludgeSprites("kludge.int"); SpriteResource title2Sprites[8] = { @@ -135,7 +134,7 @@ void OptionsMenu::showTitles2() { kludgeSprites.draw(screen, 0); screen.saveBackground(); - sound.playSample(&voc, 0); + sound.playSound("elect.voc"); for (int i = 0; i < 30 && !_vm->shouldQuit(); ++i) { events.updateGameCounter(); @@ -144,7 +143,7 @@ void OptionsMenu::showTitles2() { screen._windows[0].update(); if (i == 19) - sound.playSample(nullptr, 0); + sound.stopSound(); while (!_vm->shouldQuit() && events.timeElapsed() < 2) events.pollEventsAndWait(); diff --git a/engines/xeen/dialogs_spells.cpp b/engines/xeen/dialogs_spells.cpp index 1e0600faf9..77d1b4ef6e 100644 --- a/engines/xeen/dialogs_spells.cpp +++ b/engines/xeen/dialogs_spells.cpp @@ -59,10 +59,9 @@ Character *SpellsDialog::execute(ButtonContainer *priorDialog, Character *c, int do { if (!isCasting) { if (!c->guildMember()) { - sound.playSample(nullptr, 0); + sound.stopSound(); intf._overallFrame = 5; - File f(isDarkCc ? "skull1.voc" : "guild11.voc"); - sound.playSample(&f, 1); + sound.playSound(isDarkCc ? "skull1.voc" : "guild11.voc", 1); break; } @@ -239,10 +238,9 @@ Character *SpellsDialog::execute(ButtonContainer *priorDialog, Character *c, int if (Confirm::show(_vm, msg, castingCopy + 1)) { if (party.subtract(0, spellCost, 0, WT_FREEZE_WAIT)) { ++c->_spells[spellIndex]; - sound.playSample(nullptr, 0); + sound.stopSound(); intf._overallFrame = 0; - File f(isDarkCc ? "guild12.voc" : "parrot2.voc"); - sound.playSample(&f, 1); + sound.playSound(isDarkCc ? "guild12.voc" : "parrot2.voc", 1); } else { sound.playFX(21); } diff --git a/engines/xeen/interface.cpp b/engines/xeen/interface.cpp index 9aca904fb8..bdb871bb6e 100644 --- a/engines/xeen/interface.cpp +++ b/engines/xeen/interface.cpp @@ -1088,17 +1088,13 @@ void Interface::rest() { while (!_vm->shouldQuit() && events.timeElapsed() < 7) events.pollEventsAndWait(); - File f("dreams2.voc"); - sound.playSample(&f, 1); - while (!_vm->shouldQuit() && sound.playSample(1, 0)) + sound.playSound("dreams2.voc", 1); + while (!_vm->shouldQuit() && sound.isPlaying()) events.pollEventsAndWait(); - f.close(); - f.openFile("laff1.voc"); - sound.playSample(&f, 1); - while (!_vm->shouldQuit() && sound.playSample(1, 0)) + sound.playSound("laff1.voc", 1); + while (!_vm->shouldQuit() && sound.isPlaying()) events.pollEventsAndWait(); - f.close(); events.updateGameCounter(); while (!_vm->shouldQuit() && events.timeElapsed() < 7) @@ -1312,8 +1308,6 @@ void Interface::handleFalling() { Screen &screen = *_vm->_screen; Sound &sound = *_vm->_sound; Window &w = screen._windows[3]; - File voc1("scream.voc"); - File voc2("unnh.voc"); saveFall(); for (uint idx = 0; idx < party._activeParty.size(); ++idx) { @@ -1323,7 +1317,7 @@ void Interface::handleFalling() { screen._windows[33].update(); sound.playFX(11); - sound.playSample(&voc1, 0); + sound.playSound("scream.voc"); for (int idx = 0, incr = 2; idx < 133; ++incr, idx += incr) { fall(idx); @@ -1335,8 +1329,8 @@ void Interface::handleFalling() { assembleBorder(); w.update(); - sound.playSample(nullptr, 0); - sound.playSample(&voc2, 0); + sound.stopSound(); + sound.playSound("unnh.voc"); sound.playFX(31); fall(127); diff --git a/engines/xeen/scripts.cpp b/engines/xeen/scripts.cpp index 0bf1792b26..64b387499d 100644 --- a/engines/xeen/scripts.cpp +++ b/engines/xeen/scripts.cpp @@ -1095,9 +1095,8 @@ void Scripts::cmdSeatTextSml(Common::Array ¶ms) { void Scripts::cmdPlayEventVoc(Common::Array ¶ms) { Sound &sound = *_vm->_sound; - sound.playSample(nullptr, 0); - File f(EVENT_SAMPLES[params[0]]); - sound.playSample(&f, 1); + sound.stopSound(); + sound.playSound(EVENT_SAMPLES[params[0]], 1); cmdNoAction(params); } diff --git a/engines/xeen/sound.cpp b/engines/xeen/sound.cpp index d6bbc4c487..360cfc89da 100644 --- a/engines/xeen/sound.cpp +++ b/engines/xeen/sound.cpp @@ -26,42 +26,37 @@ namespace Xeen { -Sound *Voc::_sound; +/*------------------------------------------------------------------------*/ -Voc::Voc(const Common::String &name) { - if (!open(name)) - error("Could not open - %s", name.c_str()); +Sound::Sound(XeenEngine *vm, Audio::Mixer *mixer): Music(), _mixer(mixer) { } -void Voc::init(XeenEngine *vm) { - _sound = vm->_sound; +Sound::~Sound() { + stopSound(); } -void Voc::play() { - _sound->playSound(this, _soundHandle); -} +void Sound::playSound(Common::SeekableReadStream &s, int unused) { + stopSound(); -void Voc::stop() { - _sound->stopSound(_soundHandle); + Common::SeekableReadStream *srcStream = s.readStream(s.size()); + Audio::SeekableAudioStream *stream = Audio::makeVOCStream(srcStream, 0, DisposeAfterUse::YES); + _mixer->playStream(Audio::Mixer::kSFXSoundType, &_soundHandle, stream); } -/*------------------------------------------------------------------------*/ - -Sound::Sound(XeenEngine *vm, Audio::Mixer *mixer): Music(), _mixer(mixer) { -} +void Sound::playSound(const Common::String &name, int unused) { + File f; + if (!f.open(name)) + error("Could not open sound - %s", name.c_str()); -void Sound::proc2(Common::SeekableReadStream &f) { - // TODO + playSound(f); } -void Sound::playSound(Common::SeekableReadStream *s, Audio::SoundHandle &soundHandle, - Audio::Mixer::SoundType soundType) { - Audio::SeekableAudioStream *stream = Audio::makeVOCStream(s, 0); - _mixer->playStream(soundType, &soundHandle, stream); +void Sound::stopSound() { + _mixer->stopHandle(_soundHandle); } -void Sound::stopSound(Audio::SoundHandle &soundHandle) { - _mixer->stopHandle(soundHandle); +bool Sound::isPlaying() const { + return _mixer->isSoundHandleActive(_soundHandle); } } // End of namespace Xeen diff --git a/engines/xeen/sound.h b/engines/xeen/sound.h index b7ad94893b..71d44e694b 100644 --- a/engines/xeen/sound.h +++ b/engines/xeen/sound.h @@ -32,51 +32,35 @@ namespace Xeen { -class Sound; - -class Voc: public Common::File { -private: - static Sound *_sound; - Audio::SoundHandle _soundHandle; -public: - Voc() {} - Voc(const Common::String &name); - virtual ~Voc() { stop(); } - static void init(XeenEngine *vm); - - /** - * Start playing the sound - */ - void play(); - - /** - * Stop playing the sound - */ - void stop(); -}; - class Sound : public Music { private: Audio::Mixer *_mixer; + Audio::SoundHandle _soundHandle; public: Sound(XeenEngine *vm, Audio::Mixer *mixer); + virtual ~Sound(); - void proc2(Common::SeekableReadStream &f); + /** + * Play a given sound + */ + void playSound(Common::SeekableReadStream &s, int unused = 0); /** * Play a given sound */ - void playSound(Common::SeekableReadStream *s, Audio::SoundHandle &soundHandle, - Audio::Mixer::SoundType soundType = Audio::Mixer::kSFXSoundType); + void playSound(const Common::String &name, int unused = 0); /** * Stop playing a sound + * @remarks In the original, passing 1 to playSound stopped the sound */ - void stopSound(Audio::SoundHandle &soundHandle); - - void playSample(const Common::SeekableReadStream *stream, int v2 = 1) {} + void stopSound(); - bool playSample(int v1, int v2) { return false; } + /** + * Returns true if a sound is currently playing + * @remarks In the original, passing 0 to playSound returned play status + */ + bool isPlaying() const; }; } // End of namespace Xeen diff --git a/engines/xeen/town.cpp b/engines/xeen/town.cpp index ba4b48131b..795d4cddd6 100644 --- a/engines/xeen/town.cpp +++ b/engines/xeen/town.cpp @@ -101,7 +101,7 @@ int Town::townAction(int actionId) { addButton(Common::Rect(288, 108, 312, 128), Common::KEYCODE_ESCAPE, &_icons1); intf._overallFrame = 1; - sound.playSample(nullptr, 0); + sound.stopSound(); vocName = isDarkCc ? "bank1.voc" : "banker.voc"; break; @@ -114,7 +114,7 @@ int Town::townAction(int actionId) { addButton(Common::Rect(234, 74, 308, 82), 0); addButton(Common::Rect(234, 84, 308, 92), 0); - sound.playSample(nullptr, 0); + sound.stopSound(); vocName = isDarkCc ? "see2.voc" : "whaddayo.voc"; break; @@ -129,7 +129,7 @@ int Town::townAction(int actionId) { addButton(Common::Rect(234, 84, 308, 92), 0); _vm->_mode = MODE_17; - sound.playSample(nullptr, 0); + sound.stopSound(); vocName = isDarkCc ? "parrot1.voc" : "guild10.voc"; break; @@ -145,7 +145,7 @@ int Town::townAction(int actionId) { addButton(Common::Rect(234, 84, 308, 92), Common::KEYCODE_r); _vm->_mode = MODE_17; - sound.playSample(nullptr, 0); + sound.stopSound(); vocName = isDarkCc ? "hello1.voc" : "hello.voc"; break; @@ -158,7 +158,7 @@ int Town::townAction(int actionId) { addButton(Common::Rect(234, 74, 308, 82), Common::KEYCODE_u); addButton(Common::Rect(234, 84, 308, 92), 0); - sound.playSample(nullptr, 0); + sound.stopSound(); vocName = isDarkCc ? "help2.voc" : "maywe2.voc"; break; @@ -171,7 +171,7 @@ int Town::townAction(int actionId) { addButton(Common::Rect(281, 108, 305, 128), Common::KEYCODE_ESCAPE, &_icons1); addButton(Common::Rect(242, 108, 266, 128), Common::KEYCODE_t); - sound.playSample(nullptr, 0); + sound.stopSound(); vocName = isDarkCc ? "training.voc" : "youtrn1.voc"; break; @@ -239,8 +239,7 @@ int Town::townAction(int actionId) { if (actionId == 0) intf._overallFrame = 2; - File voc(vocName); - sound.playSample(&voc, 1); + sound.playSound(vocName, 1); do { townWait(); @@ -253,17 +252,15 @@ int Town::townAction(int actionId) { case 1: // Leave blacksmith if (isDarkCc) { - sound.playSample(nullptr, 0); - File f("come1.voc"); - sound.playSample(&f, 1); + sound.stopSound(); + sound.playSound("come1.voc", 1); } break; case 3: { // Leave Tavern - sound.playSample(nullptr, 0); - File f(isDarkCc ? "gdluck1.voc" : "goodbye.voc"); - sound.playSample(&f, 1); + sound.stopSound(); + sound.playSound(isDarkCc ? "gdluck1.voc" : "goodbye.voc", 1); map.mazeData()._mazeNumber = party._mazeId; break; @@ -559,10 +556,9 @@ Character *Town::doGuildOptions(Character *c) { intf.highlightChar(_buttonValue); if (!c->guildMember()) { - sound.playSample(nullptr, 0); + sound.stopSound(); intf._overallFrame = 5; - File f(isDarkCc ? "skull1.voc" : "guild11.voc"); - sound.playSample(&f, 1); + sound.playSound(isDarkCc ? "skull1.voc" : "guild11.voc", 1); } } } else if (_buttonValue == Common::KEYCODE_s) { @@ -608,9 +604,8 @@ Character *Town::doTavernOptions(Character *c) { // Drink if (!c->noActions()) { if (party.subtract(0, 1, 0, WT_2)) { - sound.playSample(nullptr, 0); - File f("gulp.voc"); - sound.playSample(&f, 0); + sound.stopSound(); + sound.playSound("gulp.voc"); _v21 = 1; screen._windows[10].writeString(Common::String::format(TAVERN_TEXT, @@ -668,9 +663,8 @@ Character *Town::doTavernOptions(Character *c) { ErrorScroll::show(_vm, FOOD_PACKS_FULL, WT_2); } else if (party.subtract(0, _v23, 0, WT_2)) { party._food = _v22; - sound.playSample(nullptr, 0); - File f(isDarkCc ? "thanks2.voc" : "thankyou.voc"); - sound.playSample(&f, 1); + sound.stopSound(); + sound.playSound(isDarkCc ? "thanks2.voc" : "thankyou.voc", 1); } } @@ -747,9 +741,8 @@ Character *Town::doTavernOptions(Character *c) { screen._windows[10].update(); townWait(); } else if (party.subtract(0, 1, 0, WT_2)) { - sound.playSample(nullptr, 0); - File f(isDarkCc ? "thanks2.voc" : "thankyou.voc"); - sound.playSample(&f, 1); + sound.stopSound(); + sound.playSound(isDarkCc ? "thanks2.voc" : "thankyou.voc", 1); if (party._mazeId == (isDarkCc ? 29 : 28)) { _v24 = 30; @@ -808,9 +801,8 @@ Character *Town::doTempleOptions(Character *c) { case Common::KEYCODE_d: if (_donation && party.subtract(0, _donation, 0, WT_2)) { - sound.playSample(nullptr, 0); - File f("coina.voc"); - sound.playSample(&f, 1); + sound.stopSound(); + sound.playSound("coina.voc", 1); _dayOfWeek = (_dayOfWeek + 1) / 10; if (_dayOfWeek == (party._day / 10)) { @@ -824,9 +816,8 @@ Character *Town::doTempleOptions(Character *c) { party._blessed = amt; intf.drawParty(true); - sound.playSample(nullptr, 0); - Voc voc("ahh.voc"); - voc.play(); + sound.stopSound(); + sound.playSound("ahh.voc"); _flag1 = true; _donation = 0; } @@ -855,9 +846,8 @@ Character *Town::doTempleOptions(Character *c) { _v1 = 1440; intf.drawParty(true); - sound.playSample(nullptr, 0); - File f("ahh.voc"); - sound.playSample(&f, 1); + sound.stopSound(); + sound.playSound("ahh.voc", 1); } break; @@ -872,9 +862,8 @@ Character *Town::doTempleOptions(Character *c) { _v1 = 1440; intf.drawParty(true); - sound.playSample(nullptr, 0); - File f("ahh.voc"); - sound.playSample(&f, 1); + sound.stopSound(); + sound.playSound("ahh.voc", 1); } break; @@ -909,7 +898,7 @@ Character *Town::doTrainingOptions(Character *c) { case Common::KEYCODE_t: if (_experienceToNextLevel) { - sound.playSample(nullptr, 0); + sound.stopSound(); _drawFrameIndex = 0; Common::String name; @@ -919,15 +908,13 @@ Character *Town::doTrainingOptions(Character *c) { name = isDarkCc ? "gtlost.voc" : "trainin0.voc"; } - File f(name); - sound.playSample(&f); + sound.playSound(name); } else if (!c->noActions()) { if (party.subtract(0, (c->_level._permanent * c->_level._permanent) * 10, 0, WT_2)) { _drawFrameIndex = 0; - sound.playSample(nullptr, 0); - File f(isDarkCc ? "prtygd.voc" : "trainin2.voc"); - sound.playSample(&f, 1); + sound.stopSound(); + sound.playSound(isDarkCc ? "prtygd.voc" : "trainin2.voc", 1); c->_experience -= c->nextExperienceLevel() - (c->getCurrentExperience() - c->_experience); @@ -983,7 +970,7 @@ void Town::depositWithdrawl(int choice) { drawButtons(&screen._windows[35]); screen._windows[35].update(); - sound.playSample(nullptr, 0); + sound.stopSound(); File voc("coina.voc"); bool flag = false; @@ -1038,7 +1025,7 @@ void Town::depositWithdrawl(int choice) { gems = party._gems; } - sound.playSample(&voc, 0); + sound.playSound(voc); msg = Common::String::format(GOLD_GEMS_2, DEPOSIT_WITHDRAWL[choice], XeenEngine::printMil(gold).c_str(), XeenEngine::printMil(gems).c_str()); screen._windows[35].writeString(msg); @@ -1061,7 +1048,7 @@ void Town::drawTownAnim(bool flag) { bool isDarkCc = _vm->_files->_isDarkCc; if (_townActionId == 1) { - if (sound.playSample(1, 0)) { + if (sound.isPlaying()) { if (isDarkCc) { _townSprites[_drawFrameIndex / 8].draw(screen, _drawFrameIndex % 8, _townPos); _townSprites[2].draw(screen, _vm->getRandomNumber(11) == 1 ? 9 : 10, @@ -1085,9 +1072,9 @@ void Town::drawTownAnim(bool flag) { switch (_townActionId) { case 0: - if (sound.playSample(1, 0) || (isDarkCc && intf._overallFrame)) { + if (sound.isPlaying() || (isDarkCc && intf._overallFrame)) { if (isDarkCc) { - if (sound.playSample(1, 0) || intf._overallFrame == 1) { + if (sound.isPlaying() || intf._overallFrame == 1) { _townSprites[4].draw(screen, _vm->getRandomNumber(13, 18), Common::Point(8, 30)); } else if (intf._overallFrame > 1) { @@ -1103,7 +1090,7 @@ void Town::drawTownAnim(bool flag) { break; case 2: - if (sound.playSample(1, 0)) { + if (sound.isPlaying()) { if (isDarkCc) { if (intf._overallFrame) { intf._overallFrame ^= 1; @@ -1116,19 +1103,19 @@ void Town::drawTownAnim(bool flag) { break; case 3: - if (sound.playSample(1, 0) && isDarkCc) { + if (sound.isPlaying() && isDarkCc) { _townSprites[4].draw(screen, _vm->getRandomNumber(7), Common::Point(153, 49)); } break; case 4: - if (sound.playSample(1, 0)) { + if (sound.isPlaying()) { _townSprites[3].draw(screen, _vm->getRandomNumber(2, 4), Common::Point(8, 8)); } break; case 5: - if (sound.playSample(1, 0)) { + if (sound.isPlaying()) { if (isDarkCc) { _townSprites[_drawFrameIndex / 8].draw(screen, _drawFrameIndex % 8, _townPos); } @@ -1169,8 +1156,7 @@ void Town::drawTownAnim(bool flag) { sound.playFX(45); if (_townActionId == 5 && _drawFrameIndex == 23) { - File f("spit1.voc"); - sound.playSample(&f, 0); + sound.playSound("spit1.voc"); } } else { if (_townMaxId == 32 && _drawFrameIndex == 0) diff --git a/engines/xeen/worldofxeen/darkside_cutscenes.cpp b/engines/xeen/worldofxeen/darkside_cutscenes.cpp index e3bd2c6f66..71fbe8f328 100644 --- a/engines/xeen/worldofxeen/darkside_cutscenes.cpp +++ b/engines/xeen/worldofxeen/darkside_cutscenes.cpp @@ -39,7 +39,7 @@ bool DarkSideCutscenes::showDarkSideTitle() { SpriteResource("nwc1.int"), SpriteResource("nwc2.int"), SpriteResource("nwc3.int"), SpriteResource("nwc4.int") }; - Voc voc[3]; + File voc[3]; voc[0].open("dragon1.voc"); voc[1].open("dragon2.voc"); voc[2].open("dragon3.voc"); @@ -55,21 +55,6 @@ bool DarkSideCutscenes::showDarkSideTitle() { screen.draw(); screen.fadeIn(4); - // **DEBUG**: Testing music - sound.setMusicVolume(0x5f); - File f("bigtheme.m", *_vm->_files->_sideArchives[1]); - byte *data = new byte[f.size()]; - f.read(data, f.size()); - f.close(); - - sound.playSong(data); - - events.updateGameCounter(); - events.wait(1000, true); - - sound.stopSong(); - delete[] data; - /* // Initial loop for dragon roaring int nwcIndex = 0, nwcFrame = 0; for (int idx = 0; idx < 55 && !_vm->shouldQuit(); ++idx) { @@ -81,7 +66,7 @@ bool DarkSideCutscenes::showDarkSideTitle() { switch (idx) { case 17: - voc[0].play(); + sound.playSound(voc[0]); break; case 34: case 44: @@ -89,7 +74,7 @@ bool DarkSideCutscenes::showDarkSideTitle() { nwcFrame = 0; break; case 35: - voc[1].play(); + sound.playSound(voc[1]); break; default: ++nwcFrame; @@ -108,19 +93,19 @@ bool DarkSideCutscenes::showDarkSideTitle() { switch (idx) { case 3: - sound.startMusic(40); + sound.playFX(40); break; case 11: - sound.startMusic(0); + sound.playFX(0); case 27: case 30: - sound.startMusic(3); + sound.playFX(3); break; case 31: - sound.proc2(voc[2]); + sound.playSound(voc[2]); break; case 33: - sound.startMusic(2); + sound.playFX(2); break; default: break; @@ -134,10 +119,7 @@ bool DarkSideCutscenes::showDarkSideTitle() { if (events.wait(10, true)) return false; - voc[0].stop(); - voc[1].stop(); - voc[2].stop(); - sound.stopMusic(95); + sound.songCommand(95); screen.loadBackground("jvc.raw"); screen.fadeOut(8); @@ -146,7 +128,6 @@ bool DarkSideCutscenes::showDarkSideTitle() { events.updateGameCounter(); events.wait(60, true); - */ return true; } @@ -174,7 +155,7 @@ bool DarkSideCutscenes::showDarkSideIntro() { SpriteResource sprites[3] = { SpriteResource("title.int"), SpriteResource("pyratop.int"), SpriteResource("pyramid.int") }; - Voc voc[2]; + File voc[2]; voc[0].open("pharoh1a.voc"); voc[1].open("pharoh1b.voc"); @@ -254,8 +235,8 @@ bool DarkSideCutscenes::showDarkSideEnding() { Screen &screen = *_vm->_screen; Sound &sound = *_vm->_sound; - Voc voc("ido2.voc"); -// Music newBright("newbrigh.m"); + //Voc voc("ido2.voc"); + // Music newBright("newbrigh.m"); SpriteResource box("box.vga"); // newBright.play(); diff --git a/engines/xeen/xeen.cpp b/engines/xeen/xeen.cpp index 826551354a..2013ae660d 100644 --- a/engines/xeen/xeen.cpp +++ b/engines/xeen/xeen.cpp @@ -98,7 +98,6 @@ void XeenEngine::initialize() { _sound = new Sound(this, _mixer); _spells = new Spells(this); _town = new Town(this); - Voc::init(this); File f("029.obj"); _eventData = f.readStream(f.size()); -- cgit v1.2.3