[Scummvm-cvs-logs] scummvm master -> 2f10c8ec55e5e8f43f6932199ec3bc402e0ec139

sev- sev at scummvm.org
Sat Apr 26 14:17:57 CEST 2014


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

Summary:
cb565e9eaf FULLPIPE: Implement FullpipeEngine::toggleMute()
aad1d556d6 FULLPIPE: Implement FullpipeEngine::updateSoundVolume()
fd8eb9a0e3 FULLPIPE: Implement FullpipeEngine::processArcade()
d12d69631d FULLPIPE: Implement FullpipeEngine::playTrack()
81b24d0c40 FULLPIPE: Proper implementation of FullpipeEngine::startSceneTrack()
e804b8fa2c FULLPIPE: Implement FullpipeEngine::getSceneTrack()
4598f48fd6 FULLPIPE: Remove redundant object casts
ba14a54d79 FULLPIPE: Implement FullpipeEngine::setSceneMusicParameters()
2f10c8ec55 FULLPIPE: Proper implementation of FullpipeEngine::playSound()


Commit: cb565e9eafc34b26d160dd4c5c4cf64e05872498
    https://github.com/scummvm/scummvm/commit/cb565e9eafc34b26d160dd4c5c4cf64e05872498
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-04-26T13:13:07+03:00

Commit Message:
FULLPIPE: Implement FullpipeEngine::toggleMute()

Changed paths:
    engines/fullpipe/sound.cpp



diff --git a/engines/fullpipe/sound.cpp b/engines/fullpipe/sound.cpp
index aa91f25..03e350b 100644
--- a/engines/fullpipe/sound.cpp
+++ b/engines/fullpipe/sound.cpp
@@ -158,7 +158,11 @@ void FullpipeEngine::stopAllSounds() {
 }
 
 void FullpipeEngine::toggleMute() {
-	warning("STUB: FullpipeEngine::toggleMute()");
+	if (g_fp->_soundEnabled) {
+		g_fp->_sfxVolume = g_fp->_sfxVolume != -10000 ? -10000 : 0;
+
+		updateSoundVolume();
+	}
 }
 
 void FullpipeEngine::playSound(int id, int flag) {


Commit: aad1d556d657bdb39c1cd0b896f90cd09d5dd5aa
    https://github.com/scummvm/scummvm/commit/aad1d556d657bdb39c1cd0b896f90cd09d5dd5aa
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-04-26T13:18:55+03:00

Commit Message:
FULLPIPE: Implement FullpipeEngine::updateSoundVolume()

Changed paths:
    engines/fullpipe/sound.cpp



diff --git a/engines/fullpipe/sound.cpp b/engines/fullpipe/sound.cpp
index 03e350b..774c687 100644
--- a/engines/fullpipe/sound.cpp
+++ b/engines/fullpipe/sound.cpp
@@ -208,7 +208,10 @@ void FullpipeEngine::stopAllSoundInstances(int id) {
 }
 
 void FullpipeEngine::updateSoundVolume() {
-	debug(3, "STUB FullpipeEngine::updateSoundVolume()");
+	for (int i = 0; i < _currSoundListCount; i++)
+		for (int j = 0; i < _currSoundList1[i]->getCount(); j++) {
+			g_fp->_currSoundList1[i]->getSoundByIndex(j)->setPanAndVolume(g_fp->_sfxVolume, 0);
+		}
 }
 
 void FullpipeEngine::setMusicVolume(int vol) {


Commit: fd8eb9a0e39ebeaa8f0bc69577e1d0cd4e94b8a6
    https://github.com/scummvm/scummvm/commit/fd8eb9a0e39ebeaa8f0bc69577e1d0cd4e94b8a6
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-04-26T14:02:04+03:00

Commit Message:
FULLPIPE: Implement FullpipeEngine::processArcade()

Changed paths:
    engines/fullpipe/input.cpp
    engines/fullpipe/scenes.cpp



diff --git a/engines/fullpipe/input.cpp b/engines/fullpipe/input.cpp
index 0678d15..3d6f53c 100644
--- a/engines/fullpipe/input.cpp
+++ b/engines/fullpipe/input.cpp
@@ -275,6 +275,8 @@ void FullpipeEngine::updateCursorCommon() {
 }
 
 void FullpipeEngine::initArcadeKeys(const char *varname) {
+	_arcadeKeys.clear();
+
 	GameVar *var = getGameLoaderGameVar()->getSubVarByName(varname)->getSubVarByName("KEYPOS");
 
 	if (!var)
@@ -294,6 +296,37 @@ void FullpipeEngine::initArcadeKeys(const char *varname) {
 	}
 }
 
+void FullpipeEngine::processArcade(ExCommand *cmd) {
+	if (!g_fp->_aniMan2)
+		return;
+
+	int idx;
+
+	if (cmd->_sceneClickX <= g_fp->_aniMan2->_ox) {
+		for (idx = _arcadeKeys.size() - 1; idx >= 0; idx--) {
+			if (_arcadeKeys[idx]->x < g_fp->_aniMan2->_ox)
+				break;
+		}
+
+		if (idx < 0)
+			return;
+	} else {
+		for (idx = 0; idx < _arcadeKeys.size(); idx++) {
+			if (_arcadeKeys[idx]->x > g_fp->_aniMan2->_ox)
+				break;
+		}
+
+		if (idx >= _arcadeKeys.size())
+			return;
+	}
+
+	cmd->_sceneClickX = _arcadeKeys[idx]->x;
+	cmd->_sceneClickY = _arcadeKeys[idx]->y;
+
+	cmd->_x = cmd->_sceneClickX - g_fp->_sceneRect.left;
+	cmd->_y = cmd->_sceneClickY - g_fp->_sceneRect.top;
+}
+
 void FullpipeEngine::setArcadeOverlay(int picId) {
 	Common::Point point;
 	Common::Point point2;
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 47c6a3c..7420c1b1 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -1106,10 +1106,6 @@ int defaultUpdateCursor() {
 	return g_fp->_cursorId;
 }
 
-void FullpipeEngine::processArcade(ExCommand *ex) {
-	warning("STUB: FullpipeEngine::processArcade()");
-}
-
 void FullpipeEngine::updateMapPiece(int mapId, int update) {
 	for (int i = 0; i < 200; i++) {
 		int hiWord = (_mapTable[i] >> 16) & 0xffff;


Commit: d12d69631d9a01dcf06d06b5271034769117035a
    https://github.com/scummvm/scummvm/commit/d12d69631d9a01dcf06d06b5271034769117035a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-04-26T14:22:50+03:00

Commit Message:
FULLPIPE: Implement FullpipeEngine::playTrack()

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



diff --git a/engines/fullpipe/fullpipe.cpp b/engines/fullpipe/fullpipe.cpp
index 246510e..5369c05 100644
--- a/engines/fullpipe/fullpipe.cpp
+++ b/engines/fullpipe/fullpipe.cpp
@@ -104,6 +104,18 @@ FullpipeEngine::FullpipeEngine(OSystem *syst, const ADGameDescription *gameDesc)
 
 	_musicAllowed = -1;
 	_musicGameVar = 0;
+	_musicMinDelay = 0;
+	_musicMaxDelay = 0;
+	_musicLocal = 0;
+	_trackStartDelay = 0;
+
+	memset(_sceneTracks, 0, sizeof(_sceneTracks));
+	memset(_trackName, 0, sizeof(_trackName));
+	memset(_sceneTracksCurrentTrack, 0, sizeof(_sceneTracksCurrentTrack));
+
+	_numSceneTracks = 0;
+	_sceneTrackHasSequence = false;
+	_sceneTrackIsPlaying = false;
 
 	_aniMan = 0;
 	_aniMan2 = 0;
diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h
index 5718b16..989971e 100644
--- a/engines/fullpipe/fullpipe.h
+++ b/engines/fullpipe/fullpipe.h
@@ -151,6 +151,16 @@ public:
 	int _currSoundListCount;
 	bool _soundEnabled;
 	bool _flgSoundList;
+	char _sceneTracks[10][260];
+	int _numSceneTracks;
+	bool _sceneTrackHasSequence;
+	int _musicMinDelay;
+	int _musicMaxDelay;
+	int _musicLocal;
+	char _trackName[2600];
+	int _trackStartDelay;
+	char _sceneTracksCurrentTrack[260];
+	bool _sceneTrackIsPlaying;
 
 	void stopAllSounds();
 	void toggleMute();
@@ -300,6 +310,7 @@ public:
 
 	GameVar *_musicGameVar;
 	Audio::SoundHandle _sceneTrackHandle;
+
 public:
 
 	bool _isSaveAllowed;
diff --git a/engines/fullpipe/sound.cpp b/engines/fullpipe/sound.cpp
index 774c687..10d020b 100644
--- a/engines/fullpipe/sound.cpp
+++ b/engines/fullpipe/sound.cpp
@@ -182,6 +182,62 @@ void FullpipeEngine::playSound(int id, int flag) {
 
 void FullpipeEngine::playTrack(GameVar *sceneVar, const char *name, bool delayed) {
 	warning("STUB: FullpipeEngine::playTrack(var, %s, %d)", name, delayed);
+#if 0
+	stopSoundStream2();
+
+	if (soundStream3)
+		FSOUND_Stream_Stop(soundStream4);
+#endif
+
+	if (g_fp->_musicLocal)
+		stopAllSoundStreams();
+
+	GameVar *var = sceneVar->getSubVarByName(name);
+
+	memset(g_fp->_sceneTracks, 0, sizeof(g_fp->_sceneTracks));
+
+	g_fp->_numSceneTracks = 0;
+	g_fp->_sceneTrackHasSequence = false;
+
+	if (!var)
+		return;
+
+	g_fp->_musicGameVar = var;
+
+	GameVar *tr = var->getSubVarByName("TRACKS");
+	if (tr) {
+		GameVar *sub = tr->_subVars;
+
+		while (sub) {
+			if (g_fp->_musicAllowed & sub->_value.intValue) {
+				strcpy(g_fp->_sceneTracks[g_fp->_numSceneTracks], sub->_varName);
+
+				g_fp->_numSceneTracks++;
+			}
+
+			sub = sub->_nextVarObj;
+		}
+	}
+
+	g_fp->_musicMinDelay = var->getSubVarAsInt("MINDELAY");
+	g_fp->_musicMaxDelay = var->getSubVarAsInt("MAXDELAY");
+	g_fp->_musicLocal = var->getSubVarAsInt("LOCAL");
+
+	GameVar *seq = var->getSubVarByName("SEQUENCE");
+	if (seq) {
+		g_fp->_sceneTrackHasSequence = true;
+
+		strcpy(g_fp->_trackName, seq->_value.stringValue);
+	}
+
+	if (delayed) {
+		if (g_fp->_sceneTrackIsPlaying && g_fp->_numSceneTracks == 1) {
+			if (strcmp(g_fp->_sceneTracksCurrentTrack, g_fp->_sceneTracks[0]))
+				stopAllSoundStreams();
+		}
+
+		g_fp->_trackStartDelay = var->getSubVarAsInt("STARTDELAY");
+	}
 }
 
 void global_messageHandler_handleSound(ExCommand *cmd) {


Commit: 81b24d0c4042cec0b11fff73c5594f386c06418e
    https://github.com/scummvm/scummvm/commit/81b24d0c4042cec0b11fff73c5594f386c06418e
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-04-26T14:34:12+03:00

Commit Message:
FULLPIPE: Proper implementation of FullpipeEngine::startSceneTrack()

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



diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h
index 989971e..2750525 100644
--- a/engines/fullpipe/fullpipe.h
+++ b/engines/fullpipe/fullpipe.h
@@ -166,7 +166,9 @@ public:
 	void toggleMute();
 	void playSound(int id, int flag);
 	void playTrack(GameVar *sceneVar, const char *name, bool delayed);
+	int getSceneTrack();
 	void startSceneTrack();
+	void startSoundStream1(char *trackName);
 	void stopSoundStream2();
 	void stopAllSoundStreams();
 	void stopAllSoundInstances(int id);
diff --git a/engines/fullpipe/sound.cpp b/engines/fullpipe/sound.cpp
index 10d020b..8071129 100644
--- a/engines/fullpipe/sound.cpp
+++ b/engines/fullpipe/sound.cpp
@@ -131,16 +131,41 @@ void FullpipeEngine::setSceneMusicParameters(GameVar *var) {
 }
 
 void FullpipeEngine::startSceneTrack() {
-	// TODO: Finish this
+	if (!g_fp->_sceneTrackIsPlaying && g_fp->_numSceneTracks > 0) {
+		if (g_fp->_trackStartDelay > 0) {
+			g_fp->_trackStartDelay--;
+		} else {
+			int trackNum = getSceneTrack();
+
+			if (trackNum == -1) {
+				strcpy(g_fp->_sceneTracksCurrentTrack, "silence");
+
+				g_fp->_trackStartDelay = 2880;
+				g_fp->_sceneTrackIsPlaying = 0;
+			} else {
+				strcpy(g_fp->_sceneTracksCurrentTrack, g_fp->_sceneTracks[trackNum]);
+
+				startSoundStream1(g_fp->_sceneTracksCurrentTrack);
+
+				g_fp->_sceneTrackIsPlaying = 1;
+			}
+		}
+	}
+}
+
+int FullpipeEngine::getSceneTrack() {
+	warning("STUB: FullpipeEngine::getSceneTrack()");
+
+	return -1;
+}
+
+void FullpipeEngine::startSoundStream1(char *trackName) {
+	stopAllSoundStreams();
+
 #ifdef USE_VORBIS
 	if (g_fp->_mixer->isSoundHandleActive(_sceneTrackHandle))
 		return;
 
-	GameVar *musicTrackVar = _musicGameVar->getSubVarByName("MUSIC")->getSubVarByName("TRACKS")->_subVars;
-	if (!musicTrackVar)
-		return;
-
-	char *trackName = musicTrackVar->_varName;
 	Common::File *track = new Common::File();
 	if (!track->open(trackName)) {
 		warning("Could not open %s", trackName);


Commit: e804b8fa2c6f7f60523b19b5fdc96371d009b729
    https://github.com/scummvm/scummvm/commit/e804b8fa2c6f7f60523b19b5fdc96371d009b729
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-04-26T14:43:08+03:00

Commit Message:
FULLPIPE: Implement FullpipeEngine::getSceneTrack()

Changed paths:
    engines/fullpipe/sound.cpp



diff --git a/engines/fullpipe/sound.cpp b/engines/fullpipe/sound.cpp
index 8071129..1d58f8b 100644
--- a/engines/fullpipe/sound.cpp
+++ b/engines/fullpipe/sound.cpp
@@ -154,9 +154,31 @@ void FullpipeEngine::startSceneTrack() {
 }
 
 int FullpipeEngine::getSceneTrack() {
-	warning("STUB: FullpipeEngine::getSceneTrack()");
+	int res;
 
-	return -1;
+	if (_sceneTrackHasSequence) {
+		int num = _musicGameVar->getSubVarAsInt("TRACKS");
+
+		if (_trackName[num + 1] == 's') { // 'silence'
+			res = -1;
+		} else {
+			res = _trackName[num + 1] - '0';
+
+			if (res < 0 || res >= _numSceneTracks)
+				res = 0;
+		}
+
+		int track = num + 1;
+
+		if (!_trackName[num + 2])
+			track = 0;
+
+		_musicGameVar->setSubVarAsInt("TRACKS", track);
+	} else {
+		res = _numSceneTracks * (_updateTicks % 10) / 10;
+	}
+
+	return res;
 }
 
 void FullpipeEngine::startSoundStream1(char *trackName) {


Commit: 4598f48fd6a42501e545e275d08b3ec0aadb96a6
    https://github.com/scummvm/scummvm/commit/4598f48fd6a42501e545e275d08b3ec0aadb96a6
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-04-26T14:47:18+03:00

Commit Message:
FULLPIPE: Remove redundant object casts

Changed paths:
    engines/fullpipe/sound.cpp



diff --git a/engines/fullpipe/sound.cpp b/engines/fullpipe/sound.cpp
index 1d58f8b..fd84bcd 100644
--- a/engines/fullpipe/sound.cpp
+++ b/engines/fullpipe/sound.cpp
@@ -131,23 +131,23 @@ void FullpipeEngine::setSceneMusicParameters(GameVar *var) {
 }
 
 void FullpipeEngine::startSceneTrack() {
-	if (!g_fp->_sceneTrackIsPlaying && g_fp->_numSceneTracks > 0) {
-		if (g_fp->_trackStartDelay > 0) {
-			g_fp->_trackStartDelay--;
+	if (!_sceneTrackIsPlaying && _numSceneTracks > 0) {
+		if (_trackStartDelay > 0) {
+			_trackStartDelay--;
 		} else {
 			int trackNum = getSceneTrack();
 
 			if (trackNum == -1) {
-				strcpy(g_fp->_sceneTracksCurrentTrack, "silence");
+				strcpy(_sceneTracksCurrentTrack, "silence");
 
-				g_fp->_trackStartDelay = 2880;
-				g_fp->_sceneTrackIsPlaying = 0;
+				_trackStartDelay = 2880;
+				_sceneTrackIsPlaying = 0;
 			} else {
-				strcpy(g_fp->_sceneTracksCurrentTrack, g_fp->_sceneTracks[trackNum]);
+				strcpy(_sceneTracksCurrentTrack, _sceneTracks[trackNum]);
 
-				startSoundStream1(g_fp->_sceneTracksCurrentTrack);
+				startSoundStream1(_sceneTracksCurrentTrack);
 
-				g_fp->_sceneTrackIsPlaying = 1;
+				_sceneTrackIsPlaying = true;
 			}
 		}
 	}
@@ -185,7 +185,7 @@ void FullpipeEngine::startSoundStream1(char *trackName) {
 	stopAllSoundStreams();
 
 #ifdef USE_VORBIS
-	if (g_fp->_mixer->isSoundHandleActive(_sceneTrackHandle))
+	if (_mixer->isSoundHandleActive(_sceneTrackHandle))
 		return;
 
 	Common::File *track = new Common::File();
@@ -195,26 +195,27 @@ void FullpipeEngine::startSoundStream1(char *trackName) {
 		return;
 	}
 	Audio::RewindableAudioStream *ogg = Audio::makeVorbisStream(track, DisposeAfterUse::YES);
-	g_fp->_mixer->playStream(Audio::Mixer::kMusicSoundType, &_sceneTrackHandle, ogg);
+	_mixer->playStream(Audio::Mixer::kMusicSoundType, &_sceneTrackHandle, ogg);
 #endif
 }
 
 void FullpipeEngine::stopAllSounds() {
 	// TODO: Differences from stopAllSoundStreams()
-	g_fp->_mixer->stopAll();
+	_mixer->stopAll();
 }
 
 void FullpipeEngine::toggleMute() {
-	if (g_fp->_soundEnabled) {
-		g_fp->_sfxVolume = g_fp->_sfxVolume != -10000 ? -10000 : 0;
+	if (_soundEnabled) {
+		_sfxVolume = _sfxVolume != -10000 ? -10000 : 0;
 
 		updateSoundVolume();
 	}
 }
 
 void FullpipeEngine::playSound(int id, int flag) {
-	SoundList *soundList = g_fp->_currentScene->_soundList;
+	SoundList *soundList = _currentScene->_soundList;
 	Sound *sound = soundList->getSoundById(id);
+
 	if (!sound) {
 		warning("playSound: Can't find sound with ID %d", id);
 		return;
@@ -224,7 +225,7 @@ void FullpipeEngine::playSound(int id, int flag) {
 	Audio::RewindableAudioStream *wav = Audio::makeWAVStream(dataStream, DisposeAfterUse::YES);
 	Audio::AudioStream *audioStream = new Audio::LoopingAudioStream(wav, (flag == 1) ? 0 : 1);
 	Audio::SoundHandle handle = sound->getHandle();
-	g_fp->_mixer->playStream(Audio::Mixer::kSFXSoundType, &handle, audioStream);
+	_mixer->playStream(Audio::Mixer::kSFXSoundType, &handle, audioStream);
 }
 
 void FullpipeEngine::playTrack(GameVar *sceneVar, const char *name, bool delayed) {
@@ -236,54 +237,55 @@ void FullpipeEngine::playTrack(GameVar *sceneVar, const char *name, bool delayed
 		FSOUND_Stream_Stop(soundStream4);
 #endif
 
-	if (g_fp->_musicLocal)
+	if (_musicLocal)
 		stopAllSoundStreams();
 
 	GameVar *var = sceneVar->getSubVarByName(name);
 
-	memset(g_fp->_sceneTracks, 0, sizeof(g_fp->_sceneTracks));
+	memset(_sceneTracks, 0, sizeof(_sceneTracks));
 
-	g_fp->_numSceneTracks = 0;
-	g_fp->_sceneTrackHasSequence = false;
+	_numSceneTracks = 0;
+	_sceneTrackHasSequence = false;
 
 	if (!var)
 		return;
 
-	g_fp->_musicGameVar = var;
+	_musicGameVar = var;
 
 	GameVar *tr = var->getSubVarByName("TRACKS");
 	if (tr) {
 		GameVar *sub = tr->_subVars;
 
 		while (sub) {
-			if (g_fp->_musicAllowed & sub->_value.intValue) {
-				strcpy(g_fp->_sceneTracks[g_fp->_numSceneTracks], sub->_varName);
+			if (_musicAllowed & sub->_value.intValue) {
+				strcpy(_sceneTracks[_numSceneTracks], sub->_varName);
 
-				g_fp->_numSceneTracks++;
+				_numSceneTracks++;
 			}
 
 			sub = sub->_nextVarObj;
 		}
 	}
 
-	g_fp->_musicMinDelay = var->getSubVarAsInt("MINDELAY");
-	g_fp->_musicMaxDelay = var->getSubVarAsInt("MAXDELAY");
-	g_fp->_musicLocal = var->getSubVarAsInt("LOCAL");
+	_musicMinDelay = var->getSubVarAsInt("MINDELAY");
+	_musicMaxDelay = var->getSubVarAsInt("MAXDELAY");
+	_musicLocal = var->getSubVarAsInt("LOCAL");
 
 	GameVar *seq = var->getSubVarByName("SEQUENCE");
+
 	if (seq) {
-		g_fp->_sceneTrackHasSequence = true;
+		_sceneTrackHasSequence = true;
 
-		strcpy(g_fp->_trackName, seq->_value.stringValue);
+		strcpy(_trackName, seq->_value.stringValue);
 	}
 
 	if (delayed) {
-		if (g_fp->_sceneTrackIsPlaying && g_fp->_numSceneTracks == 1) {
-			if (strcmp(g_fp->_sceneTracksCurrentTrack, g_fp->_sceneTracks[0]))
+		if (_sceneTrackIsPlaying && _numSceneTracks == 1) {
+			if (strcmp(_sceneTracksCurrentTrack, _sceneTracks[0]))
 				stopAllSoundStreams();
 		}
 
-		g_fp->_trackStartDelay = var->getSubVarAsInt("STARTDELAY");
+		_trackStartDelay = var->getSubVarAsInt("STARTDELAY");
 	}
 }
 
@@ -297,15 +299,17 @@ void FullpipeEngine::stopSoundStream2() {
 
 void FullpipeEngine::stopAllSoundStreams() {
 	// TODO: Differences from stopAllSounds()
-	g_fp->_mixer->stopAll();
+	_mixer->stopAll();
 }
 
 void FullpipeEngine::stopAllSoundInstances(int id) {
-	SoundList *soundList = g_fp->_currentScene->_soundList;
+	SoundList *soundList = _currentScene->_soundList;
+
 	for (int i = 0; i < soundList->getCount(); i++) {
 		Sound *sound = soundList->getSoundByIndex(i);
+
 		if (sound->getId() == id) {
-			g_fp->_mixer->stopHandle(sound->getHandle());
+			_mixer->stopHandle(sound->getHandle());
 		}
 	}
 }
@@ -313,7 +317,7 @@ void FullpipeEngine::stopAllSoundInstances(int id) {
 void FullpipeEngine::updateSoundVolume() {
 	for (int i = 0; i < _currSoundListCount; i++)
 		for (int j = 0; i < _currSoundList1[i]->getCount(); j++) {
-			g_fp->_currSoundList1[i]->getSoundByIndex(j)->setPanAndVolume(g_fp->_sfxVolume, 0);
+			_currSoundList1[i]->getSoundByIndex(j)->setPanAndVolume(_sfxVolume, 0);
 		}
 }
 


Commit: ba14a54d791bb59442c172a0f966a5b13b6a569b
    https://github.com/scummvm/scummvm/commit/ba14a54d791bb59442c172a0f966a5b13b6a569b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-04-26T15:00:36+03:00

Commit Message:
FULLPIPE: Implement FullpipeEngine::setSceneMusicParameters()

Changed paths:
    engines/fullpipe/sound.cpp



diff --git a/engines/fullpipe/sound.cpp b/engines/fullpipe/sound.cpp
index fd84bcd..d0f8fbd 100644
--- a/engines/fullpipe/sound.cpp
+++ b/engines/fullpipe/sound.cpp
@@ -123,11 +123,62 @@ void Sound::setPanAndVolume(int vol, int pan) {
 	warning("STUB: Sound::setPanAndVolume");
 }
 
-void FullpipeEngine::setSceneMusicParameters(GameVar *var) {
+void FullpipeEngine::setSceneMusicParameters(GameVar *gvar) {
 	warning("STUB: FullpipeEngine::setSceneMusicParameters()");
-	// TODO: Finish this (MINDELAY, MAXDELAY, LOCAL, SEQUENCE, STARTDELAY etc)
-	stopAllSoundStreams();
+#if 0
+	stopSoundStream2();
+
+	if (soundStream3)
+		FSOUND_Stream_Stop(soundStream4);
+#endif
+
+	if (_musicLocal)
+		stopAllSoundStreams();
+
+	GameVar *var = gvar->getSubVarByName("MUSIC");
+
+	memset(_sceneTracks, 0, sizeof(_sceneTracks));
+
+	_numSceneTracks = 0;
+	_sceneTrackHasSequence = false;
+
+	if (!var)
+		return;
+
 	_musicGameVar = var;
+
+	GameVar *tr = var->getSubVarByName("TRACKS");
+	if (tr) {
+		GameVar *sub = tr->_subVars;
+
+		while (sub) {
+			if (_musicAllowed & sub->_value.intValue) {
+				strcpy(_sceneTracks[_numSceneTracks], sub->_varName);
+
+				_numSceneTracks++;
+			}
+
+			sub = sub->_nextVarObj;
+		}
+	}
+
+	_musicMinDelay = var->getSubVarAsInt("MINDELAY");
+	_musicMaxDelay = var->getSubVarAsInt("MAXDELAY");
+	_musicLocal = var->getSubVarAsInt("LOCAL");
+
+	GameVar *seq = var->getSubVarByName("SEQUENCE");
+
+	if (seq) {
+		_sceneTrackHasSequence = true;
+
+		strcpy(_trackName, seq->_value.stringValue);
+	}
+
+	if (_musicLocal)
+		stopAllSoundStreams();
+
+	if (!_sceneTrackIsPlaying || _musicLocal)
+		_trackStartDelay = var->getSubVarAsInt("STARTDELAY");
 }
 
 void FullpipeEngine::startSceneTrack() {
@@ -182,6 +233,8 @@ int FullpipeEngine::getSceneTrack() {
 }
 
 void FullpipeEngine::startSoundStream1(char *trackName) {
+	warning("STUB: FullpipeEngine::startSoundStream1(%s)", trackName);
+
 	stopAllSoundStreams();
 
 #ifdef USE_VORBIS


Commit: 2f10c8ec55e5e8f43f6932199ec3bc402e0ec139
    https://github.com/scummvm/scummvm/commit/2f10c8ec55e5e8f43f6932199ec3bc402e0ec139
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-04-26T15:06:23+03:00

Commit Message:
FULLPIPE: Proper implementation of FullpipeEngine::playSound()

Changed paths:
    engines/fullpipe/sound.cpp



diff --git a/engines/fullpipe/sound.cpp b/engines/fullpipe/sound.cpp
index d0f8fbd..628d352 100644
--- a/engines/fullpipe/sound.cpp
+++ b/engines/fullpipe/sound.cpp
@@ -266,13 +266,20 @@ void FullpipeEngine::toggleMute() {
 }
 
 void FullpipeEngine::playSound(int id, int flag) {
-	SoundList *soundList = _currentScene->_soundList;
-	Sound *sound = soundList->getSoundById(id);
+	Sound *sound = 0;
+
+	for (int i = 0; i < _currSoundListCount; i++) {
+		sound = _currSoundList1[i]->getSoundById(id);
+
+		if (sound)
+			break;
+	}
 
 	if (!sound) {
 		warning("playSound: Can't find sound with ID %d", id);
 		return;
 	}
+
 	byte *soundData = sound->loadData();
 	Common::MemoryReadStream *dataStream = new Common::MemoryReadStream(soundData, sound->getDataSize());
 	Audio::RewindableAudioStream *wav = Audio::makeWAVStream(dataStream, DisposeAfterUse::YES);






More information about the Scummvm-git-logs mailing list