AbyssLib 1.301
あびす謹製ノベルゲームフレームワークライブラリ

AbyssLibSrc/AbyssLib/AbyssLib/SoundManager.h

説明を見る。
00001 /*************************************************
00002 ファイル名:SoundManager.h
00003 作成者  :あびす
00004 役割   :サウンド関連
00005 *************************************************/
00010 #ifndef ABYSSLIB_SOUNDMANAGER_H
00011 #define ABYSSLIB_SOUNDMANAGER_H
00012 
00013 namespace nsAbyssLib{
00014 namespace nsSoundManager{
00015 
00016 //サウンド用デバイス(インターフェース)
00023 class ISoundManager{
00024 public:
00025     //音量
00032     virtual long GetSEVolume() const = 0;                               //SEの音量を取得
00039     virtual long GetBGMVolume() const = 0;                              //BGMの音量を取得
00046     virtual long GetVoiceVolume() const = 0;                            //音声の音量を取得
00058     virtual void SetSEVolume(long Volume) = 0;                          //SEの音量を設定
00070     virtual void SetBGMVolume(long Volume) = 0;                         //BGMの音量を設定
00082     virtual void SetVoiceVolume(long Volume) = 0;                       //音声の音量を設定
00093     virtual void SetSEVolumeIM(long Volume) = 0;                        //SEの音量を設定(即座)
00104     virtual void SetBGMVolumeIM(long Volume) = 0;                       //BGMの音量を設定(即座)
00115     virtual void SetVoiceVolumeIM(long Volume) = 0;                     //音声の音量を設定(即座)
00122     virtual long GetDefaultSEVolume() const = 0;                        //SEの音量を取得(デフォルト)
00129     virtual long GetDefaultBGMVolume() const = 0;                       //BGMの音量を取得(デフォルト)
00136     virtual long GetDefaultVoiceVolume() const = 0;                     //音声の音量を取得(デフォルト)
00144     virtual void SetDefaultSEVolume(long Volume) = 0;                   //SEの音量を設定(デフォルト)
00152     virtual void SetDefaultBGMVolume(long Volume) = 0;                  //BGMの音量を設定(デフォルト)
00160     virtual void SetDefaultVoiceVolume(long Volume) = 0;                //音声の音量を設定(デフォルト)
00168     virtual bool IsBasedOnDefaultSEVolume() const = 0;                  //SEのデフォルト音量に現在の音量が準拠しているか?
00176     virtual bool IsBasedOnDefaultBGMVolume() const = 0;                 //BGMのデフォルト音量に現在の音量が準拠しているか?
00184     virtual bool IsBasedOnDefaultVoiceVolume() const = 0;               //音声のデフォルト音量に現在の音量が準拠しているか?
00185     //SE
00190     virtual bool StopAllSE() = 0;                                       //全SEを停止
00195     virtual bool UnloadAllSE() = 0;                                     //全SEをメモリから解放する
00201     virtual bool PlaySE(const char* FileName) = 0;                      //SEを再生
00207     virtual bool StopSE(const char* FileName) = 0;                      //SEを停止
00213     virtual bool LoadSE(const char* FileName) = 0;                      //SEをメモリに読み込む
00219     virtual bool UnloadSE(const char* FileName) = 0;                    //SEをメモリから解放する
00220     //BGM
00225     virtual bool StopBGM() = 0;                                         //BGMを停止
00231     virtual bool PlayBGM(const char* FileName) = 0;                     //BGMを再生
00237     virtual bool PlayOnceBGM(const char* FileName) = 0;                 //BGMを一度だけ再生
00238     //音声
00243     virtual bool StopAllVoice() = 0;                                    //全音声を停止
00248     virtual bool UnloadAllVoice() = 0;                                  //全音声をメモリから解放する
00254     virtual bool PlayVoice(const char* FileName) = 0;                   //音声を再生
00260     virtual bool StopVoice(const char* FileName) = 0;                   //音声を停止
00266     virtual bool LoadVoice(const char* FileName) = 0;                   //音声をメモリに読み込む
00272     virtual bool UnloadVoice(const char* FileName) = 0;                 //音声をメモリから解放する
00273     //その他
00280     virtual bool IsUsedSE(const char* FileName) const = 0;              //SEを使用しているか?
00287     virtual bool IsUsedBGM(const char* FileName) const = 0;             //BGMを使用しているか?
00294     virtual bool IsUsedVoice(const char* FileName) const = 0;           //音声を使用しているか?
00295 };
00296 
00297 //サウンド用デバイス
00303 class BaseSoundManager : public ISoundManager{
00304 public:
00308     BaseSoundManager();                                                 //デフォルトコンストラクタ
00312     virtual ~BaseSoundManager(){}                                       //仮想デストラクタ
00313     
00317     void Initialize();                                                  //初期化
00318 
00319     long GetSEVolume() const;                                           //SEの音量を取得
00320     long GetBGMVolume() const;                                          //BGMの音量を取得
00321     long GetVoiceVolume() const;                                        //音声の音量を取得
00322     void SetSEVolume(long Volume);                                      //SEの音量を設定
00323     void SetBGMVolume(long Volume);                                     //BGMの音量を設定
00324     void SetVoiceVolume(long Volume);                                   //音声の音量を設定
00325     void SetSEVolumeIM(long Volume);                                    //SEの音量を設定(即座)
00326     void SetBGMVolumeIM(long Volume);                                   //BGMの音量を設定(即座)
00327     void SetVoiceVolumeIM(long Volume);                                 //音声の音量を設定(即座)
00328     long GetDefaultSEVolume() const;                                    //SEの音量を取得(デフォルト)
00329     long GetDefaultBGMVolume() const;                                   //BGMの音量を取得(デフォルト)
00330     long GetDefaultVoiceVolume() const;                                 //音声の音量を取得(デフォルト)
00331     void SetDefaultSEVolume(long Volume);                               //SEの音量を設定(デフォルト)
00332     void SetDefaultBGMVolume(long Volume);                              //BGMの音量を設定(デフォルト)
00333     void SetDefaultVoiceVolume(long Volume);                            //音声の音量を設定(デフォルト)
00334     bool IsBasedOnDefaultSEVolume() const;                              //SEのデフォルト音量に現在の音量が準拠しているか?
00335     bool IsBasedOnDefaultBGMVolume() const;                             //BGMのデフォルト音量に現在の音量が準拠しているか?
00336     bool IsBasedOnDefaultVoiceVolume() const;                           //音声のデフォルト音量に現在の音量が準拠しているか?
00337     
00342     void SaveE(IIOStream* IOStream);                                    //保存(環境設定)
00347     void LoadE(IIOStream* IOStream);                                    //読み込み(環境設定)
00352     void SaveL(IIOStream* IOStream);                                    //保存(ローカル)
00359     void LoadL(IIOStream* IOStream);                                    //読み込み(ローカル)
00360 
00361     bool StopAllSE();                                                   //全SEを停止
00362     bool UnloadAllSE();                                                 //全SEをメモリから解放する
00363     bool PlaySE(const char* FileName);                                  //SEを再生
00364     bool StopSE(const char* FileName);                                  //SEを停止
00365     bool LoadSE(const char* FileName);                                  //SEをメモリに読み込む
00366     bool UnloadSE(const char* FileName);                                //SEをメモリから解放する
00367 
00368     bool StopBGM();                                                     //BGMを停止
00369     bool PlayBGM(const char* FileName);                                 //BGMを再生
00370     bool PlayOnceBGM(const char* FileName);                             //BGMを一度だけ再生
00375     bool UnloadBGM();                                                   //BGMをメモリから解放する
00376 
00377     bool StopAllVoice();                                                //全音声を停止
00378     bool UnloadAllVoice();                                              //全音声をメモリから解放する
00379     bool PlayVoice(const char* FileName);                               //音声を再生
00380     bool StopVoice(const char* FileName);                               //音声を停止
00381     bool LoadVoice(const char* FileName);                               //音声をメモリに読み込む
00382     bool UnloadVoice(const char* FileName);                             //音声をメモリから解放する
00383 
00384     bool IsUsedSE(const char* FileName) const;                          //SEを使用しているか?
00385     bool IsUsedBGM(const char* FileName) const;                         //BGMを使用しているか?
00386     bool IsUsedVoice(const char* FileName) const;                       //音声を使用しているか?
00387 protected:
00395     virtual void _SetSEVolume(long Volume) = 0;                         //SEの音量を設定
00403     virtual bool _PlaySE(const char* FileName) = 0;                     //SEを再生
00411     virtual bool _StopSE(const char* FileName) = 0;                     //SEを停止
00419     virtual bool _LoadSE(const char* FileName) = 0;                     //SEをメモリに読み込む
00427     virtual bool _UnloadSE(const char* FileName) = 0;                   //SEをメモリから解放する
00436     virtual bool _IsPlayingSE(const char* FileName) const = 0;          //SEが再生中かを確認する
00444     virtual void _SetBGMVolume(long Volume) = 0;                        //BGMの音量を設定
00453     virtual bool _PlayBGM(bool IsOnce) = 0;                             //BGMを再生
00460     virtual bool _StopBGM() = 0;                                        //BGMを停止
00468     virtual bool _LoadBGM(const char* FileName) = 0;                    //BGMをメモリに読み込む
00475     virtual bool _UnloadBGM() = 0;                                      //BGMをメモリから解放する
00483     virtual bool _IsPlayingBGM() const = 0;                             //BGMが再生中かを確認する
00491     virtual void _SetVoiceVolume(long Volume) = 0;                      //音声の音量を設定
00499     virtual bool _PlayVoice(const char* FileName) = 0;                  //音声を再生
00507     virtual bool _StopVoice(const char* FileName) = 0;                  //音声を停止
00515     virtual bool _LoadVoice(const char* FileName) = 0;                  //音声をメモリに読み込む
00523     virtual bool _UnloadVoice(const char* FileName) = 0;                //音声をメモリから解放する
00532     virtual bool _IsPlayingVoice(const char* FileName) const = 0;       //音声が再生中かを確認する
00533 private:
00534     string m_BGMName;                                                   //BGM名
00535     bool m_IsPlayOnceBGM;                                               //一度だけの再生か?
00536     vector<string> m_SEName;                                            //SE名
00537     vector<string> m_VoiceName;                                         //音声名
00538 
00539     long m_SEVolume;                                                    //SEの音量
00540     long m_BGMVolume;                                                   //BGMの音量
00541     long m_VoiceVolume;                                                 //音声の音量
00542     long m_DefaultSEVolume;                                             //SEの音量(0〜10000)(デフォルト)
00543     long m_DefaultBGMVolume;                                            //BGMの音量(0〜10000)(デフォルト)
00544     long m_DefaultVoiceVolume;                                          //音声の音量(0〜10000)(デフォルト)
00545 
00546 };
00547 
00548 //サウンド用デバイス(ヌルデバイス)
00554 class NullSoundManager : public BaseSoundManager{
00555 public:
00559     NullSoundManager(){}                                                //デフォルトコンストラクタ
00560 protected:
00561     void _SetSEVolume(long Volume){}                                    //SEの音量を設定
00562     bool _PlaySE(const char* FileName){ return(false); }                //SEを再生
00563     bool _StopSE(const char* FileName){ return(false); }                //SEを停止
00564     bool _LoadSE(const char* FileName){ return(false); }                //SEをメモリに読み込む
00565     bool _UnloadSE(const char* FileName){ return(false); }              //SEをメモリから解放する
00566     bool _IsPlayingSE(const char* FileName) const{ return(false); }     //SEが再生中かを確認する
00567     void _SetBGMVolume(long Volume){}                                   //BGMの音量を設定
00568     bool _PlayBGM(bool IsOnce){ return(false); }                        //BGMを再生
00569     bool _StopBGM(){ return(false); }                                   //BGMを停止
00570     bool _LoadBGM(const char* FileName){ return(false); }               //BGMをメモリに読み込む
00571     bool _UnloadBGM(){ return(false); }                                 //BGMをメモリから解放する
00572     bool _IsPlayingBGM() const{ return(false); }                        //BGMが再生中かを確認する
00573     void _SetVoiceVolume(long Volume);                                  //音声の音量を設定
00574     bool _PlayVoice(const char* FileName);                              //音声を再生
00575     bool _StopVoice(const char* FileName);                              //音声を停止
00576     bool _LoadVoice(const char* FileName);                              //音声をメモリに読み込む
00577     bool _UnloadVoice(const char* FileName);                            //音声をメモリから解放する
00578     bool _IsPlayingVoice(const char* FileName) const;                   //音声が再生中かを確認する
00579 private:
00580     NullSoundManager(const NullSoundManager&);                          //コピーコンストラクタ(禁止)
00581     NullSoundManager& operator =(const NullSoundManager&);              //代入演算子(禁止)
00582 };
00583 
00584 }
00585 }
00586 
00587 #endif
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義