aboutsummaryrefslogtreecommitdiff
path: root/engines/testbed/sound.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/testbed/sound.cpp')
-rw-r--r--engines/testbed/sound.cpp77
1 files changed, 77 insertions, 0 deletions
diff --git a/engines/testbed/sound.cpp b/engines/testbed/sound.cpp
index 671f720be5..dd4d26da44 100644
--- a/engines/testbed/sound.cpp
+++ b/engines/testbed/sound.cpp
@@ -28,6 +28,76 @@
namespace Testbed {
+enum {
+ kPlayChannel1 = 'pch1',
+ kPlayChannel2 = 'pch2',
+ kPlayChannel3 = 'pch3',
+ kPauseChannel1 = 'pac1',
+ kPauseChannel2 = 'pac2',
+ kPauseChannel3 = 'pac3'
+};
+
+SoundSubsystemDialog::SoundSubsystemDialog() : GUI::Dialog(80, 60, 400, 170) {
+ _xOffset = 25;
+ _yOffset = 0;
+ Common::String text = "Sound Subsystem Tests: Test Mixing of Audio Streams.";
+ addText(350, 20, text, Graphics::kTextAlignCenter, _xOffset, 15);
+ addButton(200, 20, "Play Channel #1", kPlayChannel1);
+ addButton(200, 20, "Play Channel #2", kPlayChannel2);
+ addButton(200, 20, "Play Channel #3", kPlayChannel3);
+ addButton(50, 20, "Close", GUI::kCloseCmd, 160, 15);
+}
+
+void SoundSubsystemDialog::addText(uint w, uint h, const Common::String text, Graphics::TextAlign textAlign, uint xOffset, uint yPadding) {
+ if (!xOffset) {
+ xOffset = _xOffset;
+ }
+ _yOffset += yPadding;
+ new GUI::StaticTextWidget(this, xOffset, _yOffset, w, h, text, textAlign);
+ _yOffset += h;
+}
+
+void SoundSubsystemDialog::addButton(uint w, uint h, const Common::String name, uint32 cmd, uint xOffset, uint yPadding) {
+ if (!xOffset) {
+ xOffset = _xOffset;
+ }
+ _yOffset += yPadding;
+ _buttonArray.push_back(new GUI::ButtonWidget(this, xOffset, _yOffset, w, h, name, cmd));
+ _yOffset += h;
+}
+
+void SoundSubsystemDialog::handleCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data) {
+ switch (cmd) {
+ case kPlayChannel1:
+ _buttonArray[0]->setLabel("Pause Channel #1");
+ _buttonArray[0]->setCmd(kPauseChannel1);
+ // TODO: Play music #1 here
+ break;
+ case kPlayChannel2:
+ _buttonArray[1]->setLabel("Pause Channel #2");
+ _buttonArray[1]->setCmd(kPauseChannel2);
+ break;
+ case kPlayChannel3:
+ _buttonArray[2]->setLabel("Pause Channel #3");
+ _buttonArray[2]->setCmd(kPauseChannel3);
+ break;
+ case kPauseChannel1:
+ _buttonArray[0]->setLabel("Play Channel #1");
+ _buttonArray[0]->setCmd(kPlayChannel1);
+ break;
+ case kPauseChannel2:
+ _buttonArray[1]->setLabel("Play Channel #2");
+ _buttonArray[1]->setCmd(kPlayChannel2);
+ break;
+ case kPauseChannel3:
+ _buttonArray[2]->setLabel("Play Channel #3");
+ _buttonArray[2]->setCmd(kPlayChannel3);
+ break;
+ default:
+ GUI::Dialog::handleCommand(sender, cmd, data);
+ }
+}
+
bool SoundSubsystem::playPCSpkSound() {
Audio::PCSpeaker *speaker = new Audio::PCSpeaker();
Audio::Mixer *mixer = g_system->getMixer();
@@ -43,8 +113,15 @@ bool SoundSubsystem::playPCSpkSound() {
return true;
}
+bool SoundSubsystem::mixSounds() {
+ SoundSubsystemDialog sDialog;
+ sDialog.runModal();
+ return true;
+}
+
SoundSubsystemTestSuite::SoundSubsystemTestSuite() {
addTest("PCSpkrSound", &SoundSubsystem::playPCSpkSound, true);
+ addTest("MixSounds", &SoundSubsystem::mixSounds, true);
}
} // End of namespace Testbed