RioEngine  0.1
My first attempt to create a 3D WYSIWYG Game Engine
csoundplayer.cpp
Go to the documentation of this file.
1 //--------------------------------------------------------------- @License begins
2 // RioEngine: The late night Coke -without whores- debugging sessions
3 // 2012-2015 Leopoldo Lomas Flores. Torreon, Coahuila. MEXICO
4 // leopoldolomas [at] gmail
5 // www.rioengine.com
6 // www.leopoldolomas.info
7 // "You have a problem, you face it like a man."
8 //
9 // This is free and unencumbered software released into the public domain.
10 //
11 // Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
12 // software, either in source code form or as a compiled binary, for any purpose,
13 // commercial or non-commercial, and by any means.
14 //
15 // In jurisdictions that recognize copyright laws, the author or authors of this
16 // software dedicate any and all copyright interest in the software to the public
17 // domain. We make this dedication for the benefit of the public at large and to
18 // the detriment of our heirs and successors. We intend this dedication to be
19 // an overt act of relinquishment in perpetuity of all present and future
20 // rights to this software under copyright law.
21 //
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS
24 // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
26 // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
27 // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 //--------------------------------------------------------------- @License ends
29 
30 #include <irrklang/irrKlang.h>
31 #include "constants.h"
32 #include "misc/directoryhelper.hpp"
33 #include "misc/genericshelper.hpp"
34 #include "cengine/csoundplayer.h"
35 
36 //-----------------------------------------------------------------------------
37 
38 static int sound_id = 0;
39 
40 //-----------------------------------------------------------------------------
41 
43  m_engine = irrklang::createIrrKlangDevice();
44  RE_ASSERT(m_engine);
45 
46  m_soundsMap = std::map<int, irrklang::ISound*>();
47 }
48 
49 //-----------------------------------------------------------------------------
50 
51 std::string CSoundPlayer::getPathForFilename(const char* filename) {
52  std::string path = DirectoryHelper::getProjectDirectory();
53  path.append(k_CSoundPlayer_SoundsFolderName);
54  path.append("\\");
55  path.append(filename);
56  return path;
57 }
58 
59 //-----------------------------------------------------------------------------
60 
61 int CSoundPlayer::play2D(const char* filename, bool play_looped, bool start_paused, bool track) {
62  irrklang::ISound* sound = m_engine->play2D(getPathForFilename(filename).c_str(), play_looped, start_paused, track);
63 
64  if(track) {
65  m_soundsMap.insert(std::pair<int, irrklang::ISound*>(sound_id, sound));
66  return sound_id++;
67  }
68 
69  return -1;
70 }
71 
72 //-----------------------------------------------------------------------------
73 
75  RE_ASSERT(id >= 0);
76  return m_soundsMap.at(id);
77 }
78 
79 //-----------------------------------------------------------------------------
80 
82  m_engine->drop();
83 }
Main header file of the irrKlang sound library, the only file needed to include.
virtual int play2D(const char *filename, bool play_looped=false, bool start_paused=false, bool track=false)
irrklang::ISound * getISound(int id)
IRRKLANG_API ISoundEngine *IRRKLANGCALLCONV createIrrKlangDevice(E_SOUND_OUTPUT_DRIVER driver=ESOD_AUTO_DETECT, int options=ESEO_DEFAULT_OPTIONS, const char *deviceID=0, const char *sdk_version_do_not_use=IRR_KLANG_VERSION)
Creates an irrKlang device. The irrKlang device is the root object for using the sound engine...
Represents a sound which is currently played.
Definition: ik_ISound.h:24
virtual ISound * play2D(const char *soundFileName, bool playLooped=false, bool startPaused=false, bool track=false, E_STREAM_MODE streamMode=ESM_AUTO_DETECT, bool enableSoundEffects=false)=0
loads a sound source (if not loaded already) from a file and plays it.
static std::string getProjectDirectory()
#define RE_ASSERT
Definition: macro.h:57