summaryrefslogtreecommitdiffstats
path: root/src/sound/sound.h
diff options
context:
space:
mode:
authorerihel <erihel@gmail.com>2012-08-09 20:20:47 +0200
committererihel <erihel@gmail.com>2012-08-09 20:20:47 +0200
commit611680a72e0f04e080c3b7ed59bd23d5b8b709f1 (patch)
treee27ba7ba84de26777d275969993d46d904eb37e7 /src/sound/sound.h
parentd56db5f4e4a8e0d572bf3d682619bb25aebe4120 (diff)
parentbc24b9f9e516e657fcc0034808e010287fc2e393 (diff)
downloadcolobot-611680a72e0f04e080c3b7ed59bd23d5b8b709f1.tar.gz
colobot-611680a72e0f04e080c3b7ed59bd23d5b8b709f1.tar.bz2
colobot-611680a72e0f04e080c3b7ed59bd23d5b8b709f1.zip
Merge branch 'dev' of https://github.com/adiblol/colobot into dev
Conflicts: src/sound/sound.h
Diffstat (limited to 'src/sound/sound.h')
-rw-r--r--src/sound/sound.h637
1 files changed, 322 insertions, 315 deletions
diff --git a/src/sound/sound.h b/src/sound/sound.h
index 1bf9ae5..d323918 100644
--- a/src/sound/sound.h
+++ b/src/sound/sound.h
@@ -1,315 +1,322 @@
-// * This file is part of the COLOBOT source code
-// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
-// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
-// *
-// * 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 3 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, see http://www.gnu.org/licenses/.
-
-// soundinterface.h
-
-/**
- * @file sound/soundinterface.h
- * @brief Sound plugin interface
- */
-
-#pragma once
-
-#include <math/vector.h>
-
-#include <plugins/plugininterface.h>
-
-/*!
- * Maximum possible audio volume
- */
-#define MAXVOLUME 100
-
-
-/**
- * \public
- * \enum Sound sound/soundinterface.h
- * \brief Sound enum representing sound file
-**/
-enum Sound
-{
- SOUND_CLICK = 0,
- SOUND_BOUM = 1,
- SOUND_EXPLO = 2,
- SOUND_FLYh = 3, /*!< human */
- SOUND_FLY = 4,
- SOUND_STEPs = 5, /*!< smooth */
- SOUND_MOTORw = 6, /*!< wheel */
- SOUND_MOTORt = 7, /*!< tank */
- SOUND_MOTORr = 8, /*!< roller */
- SOUND_ERROR = 9,
- SOUND_CONVERT = 10,
- SOUND_ENERGY = 11,
- SOUND_PLOUF = 12,
- SOUND_BLUP = 13,
- SOUND_WARNING = 14,
- SOUND_DERRICK = 15,
- SOUND_LABO = 16,
- SOUND_STATION = 17,
- SOUND_REPAIR = 18,
- SOUND_RESEARCH = 19,
- SOUND_INSECTs = 20, /*!< spider */
- SOUND_BURN = 21,
- SOUND_TZOING = 22,
- SOUND_GGG = 23,
- SOUND_MANIP = 24,
- SOUND_FIRE = 25, /*!< shooting with fireball */
- SOUND_HUMAN1 = 26, /*!< breathing */
- SOUND_STEPw = 27, /*!< water */
- SOUND_SWIM = 28,
- SOUND_RADAR = 29,
- SOUND_BUILD = 30,
- SOUND_ALARM = 31, /*!< energy alarm */
- SOUND_SLIDE = 32,
- SOUND_EXPLOi = 33, /*!< insect */
- SOUND_INSECTa = 34, /*!< ant */
- SOUND_INSECTb = 35, /*!< bee */
- SOUND_INSECTw = 36, /*!< worm */
- SOUND_INSECTm = 37, /*!< mother */
- SOUND_TREMBLE = 38,
- SOUND_PSHHH = 39,
- SOUND_NUCLEAR = 40,
- SOUND_INFO = 41,
- SOUND_OPEN = 42,
- SOUND_CLOSE = 43,
- SOUND_FACTORY = 44,
- SOUND_EGG = 45,
- SOUND_MOTORs = 46, /*!< submarine */
- SOUND_MOTORi = 47, /*!< insect (legs) */
- SOUND_SHIELD = 48,
- SOUND_FIREi = 49, /*!< shooting with orgaball (insect) */
- SOUND_GUNDEL = 50,
- SOUND_PSHHH2 = 51, /*!< shield */
- SOUND_MESSAGE = 52,
- SOUND_BOUMm = 53, /*!< metal */
- SOUND_BOUMv = 54, /*!< plant */
- SOUND_BOUMs = 55, /*!< smooth */
- SOUND_EXPLOl = 56, /*!< little */
- SOUND_EXPLOlp = 57, /*!< little power */
- SOUND_EXPLOp = 58, /*!< power */
- SOUND_STEPh = 59, /*!< hard */
- SOUND_STEPm = 60, /*!< metal */
- SOUND_POWERON = 61,
- SOUND_POWEROFF = 62,
- SOUND_AIE = 63,
- SOUND_WAYPOINT = 64,
- SOUND_RECOVER = 65,
- SOUND_DEADi = 66,
- SOUND_JOSTLE = 67,
- SOUND_GFLAT = 68,
- SOUND_DEADg = 69, /*!< shooting death */
- SOUND_DEADw = 70, /*!< drowning */
- SOUND_FLYf = 71, /*!< reactor fail */
- SOUND_ALARMt = 72, /*!< temperature alarm */
- SOUND_FINDING = 73, /*!< finds a cache object */
- SOUND_THUMP = 74,
- SOUND_TOUCH = 75,
- SOUND_BLITZ = 76,
- SOUND_MUSHROOM = 77,
- SOUND_FIREp = 78, /*!< shooting with phazer */
- SOUND_EXPLOg1 = 79, /*!< impact gun 1 */
- SOUND_EXPLOg2 = 80, /*!< impact gun 2 */
- SOUND_MOTORd = 81, /*!< engine friction */
-};
-
-
-/**
- * \public
- * \enum SoundNext sound/soundinterface.h
- * \brief Enum representing operation that will be performend on a sound at given time
-**/
-enum SoundNext
-{
- SOPER_CONTINUE = 1, /*!< continue playing */
- SOPER_STOP = 2, /*!< stop playing */
- SOPER_LOOP = 3, /*!< start over */
-};
-
-
-/**
-* @class CSoundInterface
-*
-* @brief Sound plugin interface
-*
-*/
-class CSoundInterface : public CPluginInterface
-{
- public:
- CSoundInterface() {};
- virtual ~CSoundInterface() = 0;
-
- /** Function to initialize sound device
- * @param bool b3D - enable support for 3D sound
- */
- virtual bool Create(bool b3D) = 0;
-
- /** Function called to cache all sound effect files.
- * Function calls \link CSoundInterface::Cache() \endlink for each file
- */
- virtual void CacheAll() = 0;
-
- /** Function called to cache sound effect file.
- * This function is called by plugin interface for each file.
- * @param Sound bSound - id of a file, will be used to identify sound files
- * @param std::string bFile - file to load
- * @return return true on success
- */
- virtual bool Cache(Sound bSound, std::string bFile) = 0;
-
- /** Return if plugin is enabled
- * @return return true if plugin is enabled
- */
- virtual bool RetEnable() = 0;
-
- /** Change sound mode to 2D/3D
- * @param bool bMode - true to enable 3D sound
- */
- virtual void SetSound3D(bool bMode) = 0;
-
- /** Return if we use 3D sound
- * @return true if we have 3D sound enabled
- */
- virtual bool RetSound3D() = 0;
-
- /** Return if we have 3D sound capable card
- * @return true for 3D sound support
- */
- virtual bool RetSound3DCap() = 0;
-
- /** Change global sound volume
- * @param int volume - range from 0 to MAXVOLUME
- */
- virtual void SetAudioVolume(int volume) = 0;
-
- /** Return global sound volume
- * @return global volume as int in range from 0 to MAXVOLUME
- */
- virtual int RetAudioVolume() = 0;
-
- /** Set music volume
- * @param int volume - range from 0 to MAXVOLUME
- */
- virtual void SetMusicVolume(int volume) = 0;
-
- /** Return music volume
- * @return music volume as int in range from 0 to MAXVOLUME
- */
- virtual int RetMusicVolume() = 0;
-
- /** Set listener position
- * @param Math::Vector eye - position of listener
- * @param Math::Vector lookat - direction listener is looking at
- */
- virtual void SetListener(Math::Vector eye, Math::Vector lookat) = 0;
-
- /** Update data each frame
- * @param float rTime - time since last update
- */
- virtual void FrameMove(float rTime) = 0;
-
- /** Play specific sound
- * @param Sound sound - sound to play
- * @param float amplitude - change amplitude of sound before playing
- * @param float frequency - change sound frequency before playing (0.5 octave down, 2.0 octave up)
- * @param bool bLoop - loop sound
- * @return identifier of channel that sound will be played on
- */
- virtual int Play(Sound sound, float amplitude=1.0f, float frequency=1.0f, bool bLoop = false) = 0;
-
- /** Play specific sound
- * @param Sound sound - sound to play
- * @param Math:Vector pos - position of sound in space
- * @param float amplitude - change amplitude of sound before playing
- * @param float frequency - change sound frequency before playing (0.5 octave down, 2.0 octave up)
- * @param bool bLoop - loop sound
- * @return identifier of channel that sound will be played on
- */
- virtual int Play(Sound sound, Math::Vector pos, float amplitude=1.0f, float frequency=1.0f, bool bLoop = false) = 0;
-
- /** Remove all operations that would be made on sound in channel.
- * @param int channel - channel to work on
- * @return return true on success
- */
- virtual bool FlushEnvelope(int channel) = 0;
-
- /** Add envelope to sound. Envelope is a operatino that will be performend on sound in future like changing frequency
- * @param int channel - channel to work on
- * @param float amplitude - change amplitude
- * @param float frequency - change frequency
- * @param float time - when to change (sample time)
- * @param SoundNext oper - operation to perform
- * @return return true on success
- */
- virtual bool AddEnvelope(int channel, float amplitude, float frequency, float time, SoundNext oper) = 0;
-
- /** Set sound position in space
- * @param int channel - channel to work on
- * @param Math::Vector pos - new positino of a sound
- * @return return true on success
- */
- virtual bool Position(int channel, Math::Vector pos) = 0;
-
- /** Set sound frequency
- * @param int channel - channel to work on
- * @param float frequency - change sound frequency
- * @return return true on success
- */
- virtual bool Frequency(int channel, float frequency) = 0;
-
- /** Stop playing sound
- * @param int channel - channel to work on
- * @return return true on success
- */
- virtual bool Stop(int channel) = 0;
-
- /** Stop playing all sounds
- * @return return true on success
- */
- virtual bool StopAll() = 0;
-
- /** Mute/unmute all sounds
- * @param bool bMute
- * @return return true on success
- */
- virtual bool MuteAll(bool bMute) = 0;
-
- /** Start playing music
- * @param int rank - track number
- * @param bool bRepeat - repeat playing
- * @return return true on success
- */
- virtual bool PlayMusic(int rank, bool bRepeat) = 0;
-
- /** Restart music
- * @return return true on success
- */
- virtual bool RestartMusic() = 0;
-
- /** Susspend paying music
- * @return return true on success
- */
- virtual void SuspendMusic() = 0;
-
- /** Stop playing music
- * @return return true on success
- */
- virtual void StopMusic() = 0;
-
- /** Check if music if playing
- * @return return true if music is playing
- */
- virtual bool IsPlayingMusic() = 0;
-};
+// * This file is part of the COLOBOT source code
+// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
+// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
+// *
+// * 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 3 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, see http://www.gnu.org/licenses/.
+
+// soundinterface.h
+
+/**
+ * @file sound/soundinterface.h
+ * @brief Sound plugin interface
+ */
+
+#pragma once
+
+#include <math/vector.h>
+
+#include <plugins/plugin.h>
+
+#include <string>
+
+
+/*!
+ * Maximum possible audio volume
+ */
+#define MAXVOLUME 100
+
+
+/**
+ * \public
+ * \enum Sound sound/soundinterface.h
+ * \brief Sound enum representing sound file
+**/
+enum Sound
+{
+ SOUND_CLICK = 0,
+ SOUND_BOUM = 1,
+ SOUND_EXPLO = 2,
+ SOUND_FLYh = 3, /*!< human */
+ SOUND_FLY = 4,
+ SOUND_STEPs = 5, /*!< smooth */
+ SOUND_MOTORw = 6, /*!< wheel */
+ SOUND_MOTORt = 7, /*!< tank */
+ SOUND_MOTORr = 8, /*!< roller */
+ SOUND_ERROR = 9,
+ SOUND_CONVERT = 10,
+ SOUND_ENERGY = 11,
+ SOUND_PLOUF = 12,
+ SOUND_BLUP = 13,
+ SOUND_WARNING = 14,
+ SOUND_DERRICK = 15,
+ SOUND_LABO = 16,
+ SOUND_STATION = 17,
+ SOUND_REPAIR = 18,
+ SOUND_RESEARCH = 19,
+ SOUND_INSECTs = 20, /*!< spider */
+ SOUND_BURN = 21,
+ SOUND_TZOING = 22,
+ SOUND_GGG = 23,
+ SOUND_MANIP = 24,
+ SOUND_FIRE = 25, /*!< shooting with fireball */
+ SOUND_HUMAN1 = 26, /*!< breathing */
+ SOUND_STEPw = 27, /*!< water */
+ SOUND_SWIM = 28,
+ SOUND_RADAR = 29,
+ SOUND_BUILD = 30,
+ SOUND_ALARM = 31, /*!< energy alarm */
+ SOUND_SLIDE = 32,
+ SOUND_EXPLOi = 33, /*!< insect */
+ SOUND_INSECTa = 34, /*!< ant */
+ SOUND_INSECTb = 35, /*!< bee */
+ SOUND_INSECTw = 36, /*!< worm */
+ SOUND_INSECTm = 37, /*!< mother */
+ SOUND_TREMBLE = 38,
+ SOUND_PSHHH = 39,
+ SOUND_NUCLEAR = 40,
+ SOUND_INFO = 41,
+ SOUND_OPEN = 42,
+ SOUND_CLOSE = 43,
+ SOUND_FACTORY = 44,
+ SOUND_EGG = 45,
+ SOUND_MOTORs = 46, /*!< submarine */
+ SOUND_MOTORi = 47, /*!< insect (legs) */
+ SOUND_SHIELD = 48,
+ SOUND_FIREi = 49, /*!< shooting with orgaball (insect) */
+ SOUND_GUNDEL = 50,
+ SOUND_PSHHH2 = 51, /*!< shield */
+ SOUND_MESSAGE = 52,
+ SOUND_BOUMm = 53, /*!< metal */
+ SOUND_BOUMv = 54, /*!< plant */
+ SOUND_BOUMs = 55, /*!< smooth */
+ SOUND_EXPLOl = 56, /*!< little */
+ SOUND_EXPLOlp = 57, /*!< little power */
+ SOUND_EXPLOp = 58, /*!< power */
+ SOUND_STEPh = 59, /*!< hard */
+ SOUND_STEPm = 60, /*!< metal */
+ SOUND_POWERON = 61,
+ SOUND_POWEROFF = 62,
+ SOUND_AIE = 63,
+ SOUND_WAYPOINT = 64,
+ SOUND_RECOVER = 65,
+ SOUND_DEADi = 66,
+ SOUND_JOSTLE = 67,
+ SOUND_GFLAT = 68,
+ SOUND_DEADg = 69, /*!< shooting death */
+ SOUND_DEADw = 70, /*!< drowning */
+ SOUND_FLYf = 71, /*!< reactor fail */
+ SOUND_ALARMt = 72, /*!< temperature alarm */
+ SOUND_FINDING = 73, /*!< finds a cache object */
+ SOUND_THUMP = 74,
+ SOUND_TOUCH = 75,
+ SOUND_BLITZ = 76,
+ SOUND_MUSHROOM = 77,
+ SOUND_FIREp = 78, /*!< shooting with phazer */
+ SOUND_EXPLOg1 = 79, /*!< impact gun 1 */
+ SOUND_EXPLOg2 = 80, /*!< impact gun 2 */
+ SOUND_MOTORd = 81, /*!< engine friction */
+};
+
+
+/**
+ * \public
+ * \enum SoundNext sound/soundinterface.h
+ * \brief Enum representing operation that will be performend on a sound at given time
+**/
+enum SoundNext
+{
+ SOPER_CONTINUE = 1, /*!< continue playing */
+ SOPER_STOP = 2, /*!< stop playing */
+ SOPER_LOOP = 3, /*!< start over */
+};
+
+
+/**
+* @class CSoundInterface
+*
+* @brief Sound plugin interface
+*
+*/
+class CSoundInterface : public CPlugin
+{
+ public:
+ CSoundInterface() {
+ //CInstanceManager::getInstance().AddInstance(CLASS_SOUND, this);
+ //m_iMan->AddInstance(CLASS_SOUND, this);
+ };
+ virtual ~CSoundInterface() = 0;
+
+ /** Function to initialize sound device
+ * @param bool b3D - enable support for 3D sound
+ */
+ virtual bool Create(bool b3D) = 0;
+
+ /** Function called to cache all sound effect files.
+ * Function calls \link CSoundInterface::Cache() \endlink for each file
+ */
+ virtual void CacheAll() = 0;
+
+ /** Function called to cache sound effect file.
+ * This function is called by plugin interface for each file.
+ * @param Sound bSound - id of a file, will be used to identify sound files
+ * @param std::string bFile - file to load
+ * @return return true on success
+ */
+ virtual bool Cache(Sound bSound, std::string bFile) = 0;
+
+ /** Return if plugin is enabled
+ * @return return true if plugin is enabled
+ */
+ virtual bool RetEnable() = 0;
+
+ /** Change sound mode to 2D/3D
+ * @param bool bMode - true to enable 3D sound
+ */
+ virtual void SetSound3D(bool bMode) = 0;
+
+ /** Return if we use 3D sound
+ * @return true if we have 3D sound enabled
+ */
+ virtual bool RetSound3D() = 0;
+
+ /** Return if we have 3D sound capable card
+ * @return true for 3D sound support
+ */
+ virtual bool RetSound3DCap() = 0;
+
+ /** Change global sound volume
+ * @param int volume - range from 0 to MAXVOLUME
+ */
+ virtual void SetAudioVolume(int volume) = 0;
+
+ /** Return global sound volume
+ * @return global volume as int in range from 0 to MAXVOLUME
+ */
+ virtual int RetAudioVolume() = 0;
+
+ /** Set music volume
+ * @param int volume - range from 0 to MAXVOLUME
+ */
+ virtual void SetMusicVolume(int volume) = 0;
+
+ /** Return music volume
+ * @return music volume as int in range from 0 to MAXVOLUME
+ */
+ virtual int RetMusicVolume() = 0;
+
+ /** Set listener position
+ * @param Math::Vector eye - position of listener
+ * @param Math::Vector lookat - direction listener is looking at
+ */
+ virtual void SetListener(Math::Vector eye, Math::Vector lookat) = 0;
+
+ /** Update data each frame
+ * @param float rTime - time since last update
+ */
+ virtual void FrameMove(float rTime) = 0;
+
+ /** Play specific sound
+ * @param Sound sound - sound to play
+ * @param float amplitude - change amplitude of sound before playing
+ * @param float frequency - change sound frequency before playing (0.5 octave down, 2.0 octave up)
+ * @param bool bLoop - loop sound
+ * @return identifier of channel that sound will be played on
+ */
+ virtual int Play(Sound sound, float amplitude=1.0f, float frequency=1.0f, bool bLoop = false) = 0;
+
+ /** Play specific sound
+ * @param Sound sound - sound to play
+ * @param Math:Vector pos - position of sound in space
+ * @param float amplitude - change amplitude of sound before playing
+ * @param float frequency - change sound frequency before playing (0.5 octave down, 2.0 octave up)
+ * @param bool bLoop - loop sound
+ * @return identifier of channel that sound will be played on
+ */
+ virtual int Play(Sound sound, Math::Vector pos, float amplitude=1.0f, float frequency=1.0f, bool bLoop = false) = 0;
+
+ /** Remove all operations that would be made on sound in channel.
+ * @param int channel - channel to work on
+ * @return return true on success
+ */
+ virtual bool FlushEnvelope(int channel) = 0;
+
+ /** Add envelope to sound. Envelope is a operatino that will be performend on sound in future like changing frequency
+ * @param int channel - channel to work on
+ * @param float amplitude - change amplitude
+ * @param float frequency - change frequency
+ * @param float time - when to change (sample time)
+ * @param SoundNext oper - operation to perform
+ * @return return true on success
+ */
+ virtual bool AddEnvelope(int channel, float amplitude, float frequency, float time, SoundNext oper) = 0;
+
+ /** Set sound position in space
+ * @param int channel - channel to work on
+ * @param Math::Vector pos - new positino of a sound
+ * @return return true on success
+ */
+ virtual bool Position(int channel, Math::Vector pos) = 0;
+
+ /** Set sound frequency
+ * @param int channel - channel to work on
+ * @param float frequency - change sound frequency
+ * @return return true on success
+ */
+ virtual bool Frequency(int channel, float frequency) = 0;
+
+ /** Stop playing sound
+ * @param int channel - channel to work on
+ * @return return true on success
+ */
+ virtual bool Stop(int channel) = 0;
+
+ /** Stop playing all sounds
+ * @return return true on success
+ */
+ virtual bool StopAll() = 0;
+
+ /** Mute/unmute all sounds
+ * @param bool bMute
+ * @return return true on success
+ */
+ virtual bool MuteAll(bool bMute) = 0;
+
+ /** Start playing music
+ * @param int rank - track number
+ * @param bool bRepeat - repeat playing
+ * @return return true on success
+ */
+ virtual bool PlayMusic(int rank, bool bRepeat) = 0;
+
+ /** Restart music
+ * @return return true on success
+ */
+ virtual bool RestartMusic() = 0;
+
+ /** Susspend paying music
+ * @return return true on success
+ */
+ virtual void SuspendMusic() = 0;
+
+ /** Stop playing music
+ * @return return true on success
+ */
+ virtual void StopMusic() = 0;
+
+ /** Check if music if playing
+ * @return return true if music is playing
+ */
+ virtual bool IsPlayingMusic() = 0;
+};
+