From 175606ae52505f272de59097a8e3fd85dbc1c3fb Mon Sep 17 00:00:00 2001 From: Ted John Date: Sun, 26 Mar 2017 23:00:28 +0100 Subject: [PATCH] Create new audio context interface --- src/openrct2-ui/audio/AudioContext.cpp | 50 +++++++++++++++++++++++++ src/openrct2-ui/libopenrct2ui.vcxproj | 1 + src/openrct2/audio/AudioContext.h | 52 ++++++++++++++++++++++++++ 3 files changed, 103 insertions(+) create mode 100644 src/openrct2-ui/audio/AudioContext.cpp create mode 100644 src/openrct2/audio/AudioContext.h diff --git a/src/openrct2-ui/audio/AudioContext.cpp b/src/openrct2-ui/audio/AudioContext.cpp new file mode 100644 index 0000000000..bc7d838940 --- /dev/null +++ b/src/openrct2-ui/audio/AudioContext.cpp @@ -0,0 +1,50 @@ +#pragma region Copyright (c) 2014-2016 OpenRCT2 Developers +/***************************************************************************** +* OpenRCT2, an open source clone of Roller Coaster Tycoon 2. +* +* OpenRCT2 is the work of many authors, a full list can be found in contributors.md +* For more information, visit https://github.com/OpenRCT2/OpenRCT2 +* +* OpenRCT2 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 3 of the License, or +* (at your option) any later version. +* +* A full copy of the GNU General Public License can be found in licence.txt +*****************************************************************************/ +#pragma endregion + +#include + +namespace OpenRCT2 { namespace Audio +{ + class AudioContext : public IAudioContext + { + public: + virtual ~AudioContext() + { + } + + void StartTitleMusic() override { } + + IAudioChannel * PlaySound(sint32 soundId, sint32 volume, sint32 pan) override { return nullptr; } + IAudioChannel * PlaySoundAtLocation(sint32 soundId, sint16 x, sint16 y, sint16 z) override { return nullptr; } + IAudioChannel * PlaySoundPanned(sint32 soundId, sint32 pan, sint16 x, sint16 y, sint16 z) override { return nullptr; } + + void ToggleAllSounds() override { } + void PauseSounds() override { } + void UnpauseSounds() override { } + + void StopAll() override { } + void StopCrowdSound() override { } + void StopRainSound() override { } + void StopRideMusic() override { } + void StopTitleMusic() override { } + void StopVehicleSounds() override { } + }; + + IAudioContext * CreateAudioContext() + { + return new AudioContext(); + } +} } diff --git a/src/openrct2-ui/libopenrct2ui.vcxproj b/src/openrct2-ui/libopenrct2ui.vcxproj index ca3247308d..a537a7195b 100644 --- a/src/openrct2-ui/libopenrct2ui.vcxproj +++ b/src/openrct2-ui/libopenrct2ui.vcxproj @@ -22,6 +22,7 @@ + diff --git a/src/openrct2/audio/AudioContext.h b/src/openrct2/audio/AudioContext.h new file mode 100644 index 0000000000..3f749baf79 --- /dev/null +++ b/src/openrct2/audio/AudioContext.h @@ -0,0 +1,52 @@ +#pragma region Copyright (c) 2014-2016 OpenRCT2 Developers +/***************************************************************************** +* OpenRCT2, an open source clone of Roller Coaster Tycoon 2. +* +* OpenRCT2 is the work of many authors, a full list can be found in contributors.md +* For more information, visit https://github.com/OpenRCT2/OpenRCT2 +* +* OpenRCT2 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 3 of the License, or +* (at your option) any later version. +* +* A full copy of the GNU General Public License can be found in licence.txt +*****************************************************************************/ +#pragma endregion + +#pragma once + +#include "../common.h" + +namespace OpenRCT2 +{ + namespace Audio + { + interface IAudioChannel; + + /** + * Audio services for playing music and sound effects. + */ + interface IAudioContext + { + virtual ~IAudioContext() = default; + + virtual void StartTitleMusic() abstract; + + virtual IAudioChannel * PlaySound(sint32 soundId, sint32 volume, sint32 pan) abstract; + virtual IAudioChannel * PlaySoundAtLocation(sint32 soundId, sint16 x, sint16 y, sint16 z) abstract; + virtual IAudioChannel * PlaySoundPanned(sint32 soundId, sint32 pan, sint16 x, sint16 y, sint16 z) abstract; + + virtual void ToggleAllSounds() abstract; + virtual void PauseSounds() abstract; + virtual void UnpauseSounds() abstract; + + virtual void StopAll() abstract; + virtual void StopCrowdSound() abstract; + virtual void StopRainSound() abstract; + virtual void StopRideMusic() abstract; + virtual void StopTitleMusic() abstract; + virtual void StopVehicleSounds() abstract; + }; + } +}