diff options
author | Paul Gilbert | 2018-12-07 21:52:24 -0800 |
---|---|---|
committer | Paul Gilbert | 2018-12-08 19:05:59 -0800 |
commit | 3661fc61ec319752a767e5981581ded026a57dd1 (patch) | |
tree | f8fb4b8852a9c2576a728ef27298622de5556648 /engines/glk/sound.cpp | |
parent | f6abb3ea33c7b073066732f794a9d071c38a044d (diff) | |
download | scummvm-rg350-3661fc61ec319752a767e5981581ded026a57dd1.tar.gz scummvm-rg350-3661fc61ec319752a767e5981581ded026a57dd1.tar.bz2 scummvm-rg350-3661fc61ec319752a767e5981581ded026a57dd1.zip |
GLK: Beginnings of Sounds manager
Diffstat (limited to 'engines/glk/sound.cpp')
-rw-r--r-- | engines/glk/sound.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/engines/glk/sound.cpp b/engines/glk/sound.cpp new file mode 100644 index 0000000000..5c98b93e09 --- /dev/null +++ b/engines/glk/sound.cpp @@ -0,0 +1,72 @@ +/* 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 "glk/sound.h" + +namespace Glk { + +Sounds::~Sounds() { + for (int idx = (int)_sounds.size() - 1; idx >= 0; --idx) + delete _sounds[idx]; +} + +void Sounds::removeSound(schanid_t snd) { + for (uint idx = 0; idx < _sounds.size(); ++idx) { + if (_sounds[idx] == snd) { + _sounds.remove_at(idx); + break; + } + } +} + +schanid_t Sounds::create(glui32 rock) { + schanid_t snd = new SoundChannel(); + _sounds.push_back(snd); + return snd; +} + +schanid_t Sounds::iterate(schanid_t chan, glui32 *rockptr) { + for (int idx = 0; idx < (int)_sounds.size() - 1; ++idx) { + if (_sounds[idx] == chan) { + schanid_t next = _sounds[idx + 1]; + if (*rockptr) + *rockptr = next->_rock; + + return next; + } + } + + return nullptr; +} + +/*--------------------------------------------------------------------------*/ + +SoundChannel::~SoundChannel() { + _owner->removeSound(this); + delete _stream; +} + +void SoundChannel::play(uint soundNum) { + // TODO +} + +} // End of namespace Glk |