[Scummvm-cvs-logs] scummvm master -> 4d81792b450370af8061b1422399a22bd56c1df0

sev- sev at scummvm.org
Sat Apr 26 15:25:44 CEST 2014


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:
4d81792b45 FULLPIPE: Implement global_messageHandler_handleSound()


Commit: 4d81792b450370af8061b1422399a22bd56c1df0
    https://github.com/scummvm/scummvm/commit/4d81792b450370af8061b1422399a22bd56c1df0
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-04-26T16:25:01+03:00

Commit Message:
FULLPIPE: Implement global_messageHandler_handleSound()

Changed paths:
    engines/fullpipe/sound.cpp
    engines/fullpipe/sound.h



diff --git a/engines/fullpipe/sound.cpp b/engines/fullpipe/sound.cpp
index 628d352..8280d64 100644
--- a/engines/fullpipe/sound.cpp
+++ b/engines/fullpipe/sound.cpp
@@ -26,6 +26,7 @@
 #include "fullpipe/scene.h"
 #include "fullpipe/sound.h"
 #include "fullpipe/ngiarchive.h"
+#include "fullpipe/messages.h"
 #include "common/memstream.h"
 #include "audio/audiostream.h"
 #include "audio/decoders/vorbis.h"
@@ -80,6 +81,7 @@ Sound::Sound() {
 	_objectId = 0;
 	memset(_directSoundBuffers, 0, sizeof(_directSoundBuffers));
 	_description = 0;
+	_volume = 100;
 }
 
 Sound::~Sound() {
@@ -123,6 +125,24 @@ void Sound::setPanAndVolume(int vol, int pan) {
 	warning("STUB: Sound::setPanAndVolume");
 }
 
+void Sound::play(int flag) {
+	warning("STUB: Sound::play()");
+}
+
+void Sound::freeSound() {
+	warning("STUB: Sound::freeSound()");
+}
+
+int Sound::getVolume() {
+	warning("STUB: Sound::getVolume()");
+
+	return _volume;
+}
+
+void Sound::stop() {
+	warning("STUB: Sound::stop()");
+}
+
 void FullpipeEngine::setSceneMusicParameters(GameVar *gvar) {
 	warning("STUB: FullpipeEngine::setSceneMusicParameters()");
 #if 0
@@ -350,7 +370,33 @@ void FullpipeEngine::playTrack(GameVar *sceneVar, const char *name, bool delayed
 }
 
 void global_messageHandler_handleSound(ExCommand *cmd) {
-	debug(0, "STUB: global_messageHandler_handleSound()");
+	if (!g_fp->_soundEnabled)
+		return;
+
+	Sound *snd = 0;
+
+	for (int i = 0; i < g_fp->_currSoundListCount; i++)
+		snd = g_fp->_currSoundList1[i]->getSoundByIndex(i);
+
+	if (!snd)
+		return;
+
+	if (cmd->_field_14 & 1) {
+		if (!g_fp->_flgSoundList && (cmd->_field_14 & 4))
+			snd->freeSound();
+
+		snd->updateVolume();
+
+		if (snd->_objectId && g_fp->_currentScene->getStaticANIObject1ById(snd->_objectId, -1))
+			snd->setPanAndVolumeByStaticAni();
+		else
+			snd->setPanAndVolume(g_fp->_sfxVolume, 0);
+
+		if (snd->getVolume() > -3500)
+			snd->play(cmd->_keyCode);
+	} else if (cmd->_field_14 & 2) {
+		snd->stop();
+	}
 }
 
 void FullpipeEngine::stopSoundStream2() {
diff --git a/engines/fullpipe/sound.h b/engines/fullpipe/sound.h
index e284e5e..21d9d82 100644
--- a/engines/fullpipe/sound.h
+++ b/engines/fullpipe/sound.h
@@ -32,6 +32,7 @@ class Sound : public MemoryObject {
 	int _directSoundBuffers[7];
 	byte *_soundData;
 	Audio::SoundHandle _handle;
+	int _volume;
 
 public:
 	int16 _objectId;
@@ -46,6 +47,11 @@ public:
 	int getId() const { return _id; }
 	Audio::SoundHandle getHandle() const { return _handle; }
 
+	void play(int flag);
+	void freeSound();
+	int getVolume();
+	void stop();
+
 	void setPanAndVolumeByStaticAni();
 	void setPanAndVolume(int vol, int pan);
 };






More information about the Scummvm-git-logs mailing list