[Scummvm-git-logs] scummvm master -> 42894542330d79990b340fb5425b71ac7eaf140e

dreammaster dreammaster at scummvm.org
Sat Sep 17 05:27:31 CEST 2016


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
4289454233 XEEN: Cleanup of Sound driver


Commit: 42894542330d79990b340fb5425b71ac7eaf140e
    https://github.com/scummvm/scummvm/commit/42894542330d79990b340fb5425b71ac7eaf140e
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2016-09-16T23:27:26-04:00

Commit Message:
XEEN: Cleanup of Sound driver

Changed paths:
    engines/xeen/combat.cpp
    engines/xeen/dialogs_items.cpp
    engines/xeen/dialogs_options.cpp
    engines/xeen/dialogs_spells.cpp
    engines/xeen/interface.cpp
    engines/xeen/scripts.cpp
    engines/xeen/sound.cpp
    engines/xeen/sound.h
    engines/xeen/town.cpp
    engines/xeen/worldofxeen/darkside_cutscenes.cpp
    engines/xeen/xeen.cpp



diff --git a/engines/xeen/combat.cpp b/engines/xeen/combat.cpp
index be7ade8..c8e912c 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 59bf35d..ed9f7f5 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 72445bf..b2390e3 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 1e0600f..77d1b4e 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 9aca904..bdb871b 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 0bf1792..64b3874 100644
--- a/engines/xeen/scripts.cpp
+++ b/engines/xeen/scripts.cpp
@@ -1095,9 +1095,8 @@ void Scripts::cmdSeatTextSml(Common::Array<byte> &params) {
 
 void Scripts::cmdPlayEventVoc(Common::Array<byte> &params) {
 	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 d6bbc4c..360cfc8 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 b7ad948..71d44e6 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 ba4b481..795d4cd 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 e3bd2c6..71fbe8f 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 8265513..2013ae6 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());





More information about the Scummvm-git-logs mailing list