#region Copyright & License Information /* * Copyright (c) The OpenRA Developers and Contributors * This file is part of OpenRA, which is free software. It is made * available to you 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. For more * information, see COPYING. */ #endregion using System.IO; namespace OpenRA.Platforms.Default { sealed class DummySoundEngine : ISoundEngine { public bool Dummy => true; public SoundDevice[] AvailableDevices() { var defaultDevices = new[] { new SoundDevice(null, "No Sound Output"), }; return defaultDevices; } public DummySoundEngine() { } public ISoundSource AddSoundSourceFromMemory(byte[] data, int channels, int sampleBits, int sampleRate) { return new NullSoundSource(); } public ISound Play2D(ISoundSource soundSource, bool loop, bool relative, WPos pos, float volume, bool attenuateVolume) { return new NullSound(); } public ISound Play2DStream(Stream stream, int channels, int sampleBits, int sampleRate, bool loop, bool relative, WPos pos, float volume) { return null; } public float Volume { get => 0; set { } } public void PauseSound(ISound sound, bool paused) { } public void SetAllSoundsPaused(bool paused) { } public void SetSoundVolume(float volume, ISound music, ISound video) { } public void StopSound(ISound sound) { } public void StopAllSounds() { } public void SetListenerPosition(WPos position) { } public void SetSoundLooping(bool looping, ISound sound) { } public void Dispose() { } } class NullSoundSource : ISoundSource { public void Dispose() { } } class NullSound : ISound { public float Volume { get; set; } public float SeekPosition => 0; public bool Complete => false; public void SetPosition(WPos position) { } } }