Fission FSN
Loading...
Searching...
No Matches
fsIAudioManager.h
Go to the documentation of this file.
1/********************************************************************
2*
3* File: fsIAudioManager.h
4*
5* Purpose: Music and sound effects handling.
6*
7*********************************************************************/
8
9#ifndef fsIAudioManagerhdr
10#define fsIAudioManagerhdr
11
12#include <map>
13#include <memory>
14#include <vector>
15
18
19class fsCResourceName;
23
24
25class fsIAudioManager : public fsTSingletonBackend<fsIAudioManager>
26{
28
29public:
30
31 void update(fsS32 pDelta);
32
33 void globalVolumeSet(fsF32 pGlobalVolume);
34
35 void musicPlay(const fsCResourceName& pFileName);
36 void musicStop();
37 void musicVolumeSet(fsF32 pMusicVolume);
38
39 void effectCache(const fsCResourceName& pFileName);
40 void effectPlay(const fsCResourceName& pFileName, fsBool pLoop = false);
41 void effectsVolumeSet(fsF32 pEffectsVolume);
42 fsF32 effectsVolumeGet() const;
43
44 void effectsCacheFlush();
45 void pause();
46 void resume();
47
48protected:
49
51
52 void preDestroyDo() override { shutdown(); }
53
54 virtual void effectsCacheFlushDo() = 0;
55
56 virtual void updateDo(fsS32 pDelta) {}
57
58 virtual void effectsVolumeSetDo(fsF32 pEffectsVolume) {}
59
60 virtual void effectPlayDo(fsICachedSoundEffect* const pSoundEffect, fsBool pLoop) {}
61
62 fsF32 globalVolumeGet() const;
63
65 virtual ~fsIAudioManager();
66
67 std::map<fsCUniqueId, fsICachedSoundEffect*> mCachedEffects;
68 std::vector<std::pair<fsISoundEffectInstance*, fsICachedSoundEffect*>> mLiveEffects;
69 std::unique_ptr<fsIMusicInstance> mTune;
70
71private:
72
74
75 fsICachedSoundEffect* effectGet(const fsCResourceName& pFileName);
76 void shutdown();
77
78 fsF32 mGlobalVolume;
79 fsF32 mMusicVolume;
80 fsF32 mSFXVolume;
81
82};
83
84#endif
Definition fsCResourceName.h:32
void musicPlay(const fsCResourceName &pFileName)
Definition fsIAudioManager.cpp:125
void preDestroyDo() override
Definition fsIAudioManager.h:52
virtual void effectsVolumeSetDo(fsF32 pEffectsVolume)
Definition fsIAudioManager.h:58
void musicVolumeSet(fsF32 pMusicVolume)
Definition fsIAudioManager.cpp:143
void globalVolumeSet(fsF32 pGlobalVolume)
Definition fsIAudioManager.cpp:136
void musicStop()
Definition fsIAudioManager.cpp:131
void effectsCacheFlush()
Definition fsIAudioManager.cpp:112
void pause()
Definition fsIAudioManager.cpp:88
void effectsVolumeSet(fsF32 pEffectsVolume)
Definition fsIAudioManager.cpp:149
void update(fsS32 pDelta)
Definition fsIAudioManager.cpp:48
void resume()
Definition fsIAudioManager.cpp:100
virtual void updateDo(fsS32 pDelta)
Definition fsIAudioManager.h:56
virtual void effectsCacheFlushDo()=0
virtual ~fsIAudioManager()
Definition fsIAudioManager.cpp:174
fsIAudioManager()
Definition fsIAudioManager.cpp:166
virtual void effectPlayDo(fsICachedSoundEffect *const pSoundEffect, fsBool pLoop)
Definition fsIAudioManager.h:60
static fsIAudioManager * backendInstanceCreate()
Definition fsIAudioManager.cpp:155
std::vector< std::pair< fsISoundEffectInstance *, fsICachedSoundEffect * > > mLiveEffects
Definition fsIAudioManager.h:68
std::map< fsCUniqueId, fsICachedSoundEffect * > mCachedEffects
Definition fsIAudioManager.h:67
fsF32 globalVolumeGet() const
Definition fsIAudioManager.cpp:38
void effectCache(const fsCResourceName &pFileName)
Definition fsIAudioManager.cpp:75
void effectPlay(const fsCResourceName &pFileName, fsBool pLoop=false)
Definition fsIAudioManager.cpp:80
fsF32 effectsVolumeGet() const
Definition fsIAudioManager.cpp:43
std::unique_ptr< fsIMusicInstance > mTune
Definition fsIAudioManager.h:69
Definition fsICachedSoundEffect.h:15
Definition fsIMusicInstance.h:17
Definition fsISoundEffectInstance.h:16
bool fsBool
Definition fsBaseTypes.h:26
int fsS32
Definition fsBaseTypes.h:20
float fsF32
Definition fsBaseTypes.h:28