AbyssLib 1.301
あびす謹製ノベルゲームフレームワークライブラリ
|
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