aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/sound
diff options
context:
space:
mode:
authorPaul Gilbert2016-08-03 22:25:47 -0400
committerPaul Gilbert2016-08-03 22:25:47 -0400
commitc34af3993771db881b27ebdbdd4d531cbc9c48b4 (patch)
tree57a76da6a3bfbbb8a1616acd7cdfd326630b0f32 /engines/titanic/sound
parent3fda4f0ef5ec56caad0332e473993f5628ca6e42 (diff)
downloadscummvm-rg350-c34af3993771db881b27ebdbdd4d531cbc9c48b4.tar.gz
scummvm-rg350-c34af3993771db881b27ebdbdd4d531cbc9c48b4.tar.bz2
scummvm-rg350-c34af3993771db881b27ebdbdd4d531cbc9c48b4.zip
TITANIC: Correct sound manager methods to return existing WaveFile class
Diffstat (limited to 'engines/titanic/sound')
-rw-r--r--engines/titanic/sound/sound.cpp51
-rw-r--r--engines/titanic/sound/sound.h34
-rw-r--r--engines/titanic/sound/sound_manager.cpp8
-rw-r--r--engines/titanic/sound/sound_manager.h28
-rw-r--r--engines/titanic/sound/sound_resource.cpp32
-rw-r--r--engines/titanic/sound/sound_resource.h35
-rw-r--r--engines/titanic/sound/wave_file.cpp5
-rw-r--r--engines/titanic/sound/wave_file.h2
8 files changed, 72 insertions, 123 deletions
diff --git a/engines/titanic/sound/sound.cpp b/engines/titanic/sound/sound.cpp
index 34214f5cd0..e8084d79e0 100644
--- a/engines/titanic/sound/sound.cpp
+++ b/engines/titanic/sound/sound.cpp
@@ -71,7 +71,7 @@ void CSound::fn3(int handle, int val2, int val3) {
warning("TODO: CSound::fn3");
}
-void CSound::fn4(CSoundResource *soundRes, int val) {
+void CSound::fn4(WaveFile *waveFile, int val) {
// TODO
}
@@ -79,7 +79,7 @@ void CSound::checkSounds() {
for (CSoundItemList::iterator i = _sounds.begin(); i != _sounds.end(); ++i) {
CSoundItem *soundItem = *i;
if (soundItem->_field24 && soundItem->_field28) {
- if (_soundManager.isActive(soundItem->_soundResource)) {
+ if (_soundManager.isActive(soundItem->_waveFile)) {
_sounds.remove(soundItem);
delete soundItem;
}
@@ -91,7 +91,7 @@ void CSound::removeOldest() {
for (CSoundItemList::iterator i = _sounds.reverse_begin();
i != _sounds.end(); --i) {
CSoundItem *soundItem = *i;
- if (soundItem->_field28 && !_soundManager.isActive(soundItem->_soundResource)) {
+ if (soundItem->_field28 && !_soundManager.isActive(soundItem->_waveFile)) {
_sounds.remove(soundItem);
delete soundItem;
break;
@@ -99,12 +99,11 @@ void CSound::removeOldest() {
}
}
-CSoundItem *CSound::getTrueTalkSound(CDialogueFile *dialogueFile, int index) {
- warning("TODO: CSound::getTrueTalkSound");
- return nullptr;
+WaveFile *CSound::getTrueTalkSound(CDialogueFile *dialogueFile, int index) {
+ return loadSpeech(dialogueFile, index);
}
-CSoundResource *CSound::loadSound(const CString &name) {
+WaveFile *CSound::loadSound(const CString &name) {
checkSounds();
// Check whether an entry for the given name is already active
@@ -114,15 +113,15 @@ CSoundResource *CSound::loadSound(const CString &name) {
// Found it, so move it to the front of the list and return
_sounds.remove(soundItem);
_sounds.push_front(soundItem);
- return soundItem->_soundResource;
+ return soundItem->_waveFile;
}
}
// Create new sound item
CSoundItem *soundItem = new CSoundItem(name);
- soundItem->_soundResource = _soundManager.loadSound(name);
+ soundItem->_waveFile = _soundManager.loadSound(name);
- if (!soundItem->_soundResource) {
+ if (!soundItem->_waveFile) {
// Couldn't load sound, so destroy new item and return
delete soundItem;
return 0;
@@ -136,21 +135,21 @@ CSoundResource *CSound::loadSound(const CString &name) {
if (_sounds.size() > 10)
removeOldest();
- return soundItem->_soundResource;
+ return soundItem->_waveFile;
}
int CSound::playSound(const CString &name, CProximity &prox) {
- CSoundResource *soundRes = loadSound(name);
- if (!soundRes)
+ WaveFile *waveFile = loadSound(name);
+ if (!waveFile)
return -1;
- prox._field6C = soundRes->fn1();
- fn4(soundRes, prox._field60);
+ prox._field6C = waveFile->fn1();
+ fn4(waveFile, prox._field60);
- return _soundManager.playSound(*soundRes, prox);
+ return _soundManager.playSound(*waveFile, prox);
}
-CSoundResource *CSound::loadSpeech(CDialogueFile *dialogueFile, int speechId) {
+WaveFile *CSound::loadSpeech(CDialogueFile *dialogueFile, int speechId) {
checkSounds();
// Check whether an entry for the given name is already active
@@ -161,15 +160,15 @@ CSoundResource *CSound::loadSpeech(CDialogueFile *dialogueFile, int speechId) {
// Found it, so move it to the front of the list and return
_sounds.remove(soundItem);
_sounds.push_front(soundItem);
- return soundItem->_soundResource;
+ return soundItem->_waveFile;
}
}
// Create new sound item
CSoundItem *soundItem = new CSoundItem(dialogueFile->getFile(), speechId);
- soundItem->_soundResource = _soundManager.loadSpeech(dialogueFile, speechId);
+ soundItem->_waveFile = _soundManager.loadSpeech(dialogueFile, speechId);
- if (!soundItem->_soundResource) {
+ if (!soundItem->_waveFile) {
// Couldn't load speech, so destroy new item and return
delete soundItem;
return 0;
@@ -183,18 +182,18 @@ CSoundResource *CSound::loadSpeech(CDialogueFile *dialogueFile, int speechId) {
if (_sounds.size() > 10)
removeOldest();
- return soundItem->_soundResource;
+ return soundItem->_waveFile;
}
int CSound::playSpeech(CDialogueFile *dialogueFile, int speechId, CProximity &prox) {
- CSoundResource *soundRes = loadSpeech(dialogueFile, speechId);
- if (!soundRes)
+ WaveFile *waveFile = loadSpeech(dialogueFile, speechId);
+ if (!waveFile)
return -1;
- prox._field6C = soundRes->fn1();
- fn4(soundRes, prox._field60);
+ prox._field6C = waveFile->fn1();
+ fn4(waveFile, prox._field60);
- return _soundManager.playSound(*soundRes, prox);
+ return _soundManager.playSound(*waveFile, prox);
}
} // End of namespace Titanic
diff --git a/engines/titanic/sound/sound.h b/engines/titanic/sound/sound.h
index bc61d488ef..c14c9e17c4 100644
--- a/engines/titanic/sound/sound.h
+++ b/engines/titanic/sound/sound.h
@@ -26,7 +26,7 @@
#include "titanic/support/simple_file.h"
#include "titanic/sound/proximity.h"
#include "titanic/sound/sound_manager.h"
-#include "titanic/sound/sound_resource.h"
+#include "titanic/sound/wave_file.h"
#include "titanic/core/list.h"
#include "titanic/core/view_item.h"
#include "titanic/true_talk/dialogue_file.h"
@@ -38,17 +38,17 @@ class CGameManager;
class CSoundItem : public ListItem {
public:
CString _name;
- CSoundResource *_soundResource;
+ WaveFile *_waveFile;
File *_dialogueFileHandle;
int _speechId;
int _field24;
int _field28;
public:
- CSoundItem() : ListItem(), _soundResource(nullptr), _dialogueFileHandle(nullptr),
+ CSoundItem() : ListItem(), _waveFile(nullptr), _dialogueFileHandle(nullptr),
_speechId(0), _field24(0), _field28(0) {}
- CSoundItem(const CString &name) : ListItem(), _name(name), _soundResource(nullptr),
+ CSoundItem(const CString &name) : ListItem(), _name(name), _waveFile(nullptr),
_dialogueFileHandle(nullptr), _speechId(0), _field24(0), _field28(0) {}
- CSoundItem(File *dialogueFile, int speechId) : ListItem(), _soundResource(nullptr),
+ CSoundItem(File *dialogueFile, int speechId) : ListItem(), _waveFile(nullptr),
_dialogueFileHandle(dialogueFile), _speechId(speechId), _field24(0), _field28(0) {}
int fn1();
@@ -115,21 +115,31 @@ public:
bool fn1(int val);
void fn2(int handle);
void fn3(int handle, int val2, int val3);
- void fn4(CSoundResource *soundRes, int val);
+ void fn4(WaveFile *waveFile, int val);
void managerProc8(int v) { _soundManager.proc8(v); }
- CSoundItem *getTrueTalkSound(CDialogueFile *dialogueFile, int index);
+ /**
+ * Loads a TrueTalk dialogue
+ * @param dialogueFile Dialogue file reference
+ * @param speechId Speech Id within dialogue
+ * @returns Wave file instance
+ */
+ WaveFile *getTrueTalkSound(CDialogueFile *dialogueFile, int index);
/**
- * Load a sound
- * @param name Name of sound resource
- * @returns Sound item record
+ * Load a speech resource
+ * @param dialogueFile Dialogue file reference
+ * @param speechId Speech Id within dialogue
+ * @returns Wave file instance
*/
- CSoundResource *loadSpeech(CDialogueFile *dialogueFile, int speechId);
+ WaveFile *loadSpeech(CDialogueFile *dialogueFile, int speechId);
/**
* Play a speech
+ * @param dialogueFile Dialogue file reference
+ * @param speechId Speech Id within dialogue
+ * @param prox Proximity instance
*/
int playSpeech(CDialogueFile *dialogueFile, int speechId, CProximity &prox);
@@ -138,7 +148,7 @@ public:
* @param name Name of sound resource
* @returns Sound item record
*/
- CSoundResource *loadSound(const CString &name);
+ WaveFile *loadSound(const CString &name);
/**
* Play a sound
diff --git a/engines/titanic/sound/sound_manager.cpp b/engines/titanic/sound/sound_manager.cpp
index 5cc5b597aa..61ad59ce7f 100644
--- a/engines/titanic/sound/sound_manager.cpp
+++ b/engines/titanic/sound/sound_manager.cpp
@@ -34,12 +34,12 @@ QSoundManager::QSoundManager() : _field18(0), _field1C(0) {
Common::fill(&_field4A0[0], &_field4A0[16], 0);
}
-CSoundResource *QSoundManager::loadSound(const CString &name) {
+WaveFile *QSoundManager::loadSound(const CString &name) {
warning("TODO");
return nullptr;
}
-CSoundResource *QSoundManager::loadSpeech(CDialogueFile *dialogueFile, int speechId) {
+WaveFile *QSoundManager::loadSpeech(CDialogueFile *dialogueFile, int speechId) {
warning("TODO");
return nullptr;
}
@@ -49,7 +49,7 @@ int QSoundManager::proc5() const {
return 0;
}
-int QSoundManager::playSound(CSoundResource &soundRes, CProximity &prox) {
+int QSoundManager::playSound(WaveFile &soundRes, CProximity &prox) {
warning("TODO");
return 0;
}
@@ -87,7 +87,7 @@ bool QSoundManager::proc14() {
return false;
}
-bool QSoundManager::isActive(const CSoundResource *soundRes) const {
+bool QSoundManager::isActive(const WaveFile *waveFile) const {
warning("TODO");
return false;
}
diff --git a/engines/titanic/sound/sound_manager.h b/engines/titanic/sound/sound_manager.h
index 5a3aa2f01d..85ee00a3f7 100644
--- a/engines/titanic/sound/sound_manager.h
+++ b/engines/titanic/sound/sound_manager.h
@@ -25,7 +25,7 @@
#include "titanic/support/simple_file.h"
#include "titanic/sound/proximity.h"
-#include "titanic/sound/sound_resource.h"
+#include "titanic/sound/wave_file.h"
#include "titanic/true_talk/dialogue_file.h"
namespace Titanic {
@@ -44,23 +44,23 @@ public:
/**
* Loads a sound
* @param name Name of sound resource
- * @returns Loaded sound handle
+ * @returns Loaded wave file
*/
- virtual CSoundResource *loadSound(const CString &name) { return nullptr; }
+ virtual WaveFile *loadSound(const CString &name) { return nullptr; }
/**
* Loads a speech resource from a dialogue file
* @param name Name of sound resource
- * @returns Loaded sound handle
+ * @returns Loaded wave file
*/
- virtual CSoundResource *loadSpeech(CDialogueFile *dialogueFile, int speechId) { return 0; }
+ virtual WaveFile *loadSpeech(CDialogueFile *dialogueFile, int speechId) { return 0; }
virtual int proc5() const { return 0; }
/**
- * Start playing a previously loaded sound resource
+ * Start playing a previously loaded wave file
*/
- virtual int playSound(CSoundResource &soundRes, CProximity &prox) = 0;
+ virtual int playSound(WaveFile &waveFile, CProximity &prox) = 0;
virtual void proc7() = 0;
virtual void proc8(int v) = 0;
@@ -74,7 +74,7 @@ public:
/**
* Returns true if the given sound is currently active
*/
- virtual bool isActive(const CSoundResource *soundRes) const { return false; }
+ virtual bool isActive(const WaveFile *waveFile) const { return false; }
virtual int proc16() const { return 0; }
virtual void WaveMixPump() {}
@@ -134,23 +134,23 @@ public:
/**
* Loads a sound
* @param name Name of sound resource
- * @returns Loaded sound handle
+ * @returns Loaded wave file
*/
- virtual CSoundResource *loadSound(const CString &name);
+ virtual WaveFile *loadSound(const CString &name);
/**
* Loads a speech resource from a dialogue file
* @param name Name of sound resource
- * @returns Loaded sound handle
+ * @returns Loaded wave file
*/
- virtual CSoundResource *loadSpeech(CDialogueFile *dialogueFile, int speechId);
+ virtual WaveFile *loadSpeech(CDialogueFile *dialogueFile, int speechId);
virtual int proc5() const;
/**
* Start playing a previously loaded sound resource
*/
- virtual int playSound(CSoundResource &soundRes, CProximity &prox);
+ virtual int playSound(WaveFile &waveFile, CProximity &prox);
virtual void proc7();
virtual void proc8(int v);
@@ -164,7 +164,7 @@ public:
/**
* Returns true if the given sound is currently active
*/
- virtual bool isActive(const CSoundResource *soundRes) const;
+ virtual bool isActive(const WaveFile *soundRes) const;
virtual int proc16() const;
virtual void WaveMixPump();
diff --git a/engines/titanic/sound/sound_resource.cpp b/engines/titanic/sound/sound_resource.cpp
deleted file mode 100644
index 2184a25f52..0000000000
--- a/engines/titanic/sound/sound_resource.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "titanic/sound/sound_resource.h"
-
-namespace Titanic {
-
-int CSoundResource::fn1() {
- // TODO
- return 0;
-}
-
-} // End of namespace Titanic z
diff --git a/engines/titanic/sound/sound_resource.h b/engines/titanic/sound/sound_resource.h
deleted file mode 100644
index b88988ed21..0000000000
--- a/engines/titanic/sound/sound_resource.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef TITANIC_SOUND_RESOURCE_H
-#define TITANIC_SOUND_RESOURCE_H
-
-namespace Titanic {
-
-class CSoundResource {
-public:
- int fn1();
-};
-
-} // End of namespace Titanic
-
-#endif /* TITANIC_SOUND_RESOURCE_H */
diff --git a/engines/titanic/sound/wave_file.cpp b/engines/titanic/sound/wave_file.cpp
index 288f5f525d..2459f1eee6 100644
--- a/engines/titanic/sound/wave_file.cpp
+++ b/engines/titanic/sound/wave_file.cpp
@@ -24,4 +24,9 @@
namespace Titanic {
+int WaveFile::fn1() {
+ // TODO
+ return 0;
+}
+
} // End of namespace Titanic z
diff --git a/engines/titanic/sound/wave_file.h b/engines/titanic/sound/wave_file.h
index 0bb836ef74..b27e5e7707 100644
--- a/engines/titanic/sound/wave_file.h
+++ b/engines/titanic/sound/wave_file.h
@@ -47,6 +47,8 @@ public:
WaveFile() : _field0(2), _field4(0), _field8(0), _handle(0),
_owner(nullptr), _field14(1), _field18(0), _field1C(0),
_field20(0), _field24(0), _field28(0), _field2C(-1) {}
+
+ int fn1();
};
} // End of namespace Titanic