Initial commit: client source
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
#pragma once
|
||||
|
||||
#include "../eterBase/Singleton.h"
|
||||
|
||||
#include "SoundManagerStream.h"
|
||||
#include "SoundManager2D.h"
|
||||
#include "SoundManager3D.h"
|
||||
#include "Type.h"
|
||||
|
||||
class CSoundManager : public CSingleton<CSoundManager>
|
||||
{
|
||||
public:
|
||||
CSoundManager();
|
||||
virtual ~CSoundManager();
|
||||
|
||||
BOOL Create();
|
||||
void Destroy();
|
||||
|
||||
void SetPosition(float fx, float fy, float fz);
|
||||
void SetDirection(float fxDir, float fyDir, float fzDir, float fxUp, float fyUp, float fzUp);
|
||||
void Update();
|
||||
|
||||
float GetSoundScale();
|
||||
void SetSoundScale(float fScale);
|
||||
void SetAmbienceSoundScale(float fScale);
|
||||
void SetSoundVolume(float fVolume);
|
||||
void SetSoundVolumeRatio(float fRatio);
|
||||
void SetMusicVolume(float fVolume);
|
||||
void SetMusicVolumeRatio(float fRatio);
|
||||
void SetSoundVolumeGrade(int iGrade);
|
||||
void SetMusicVolumeGrade(int iGrade);
|
||||
void SaveVolume();
|
||||
void RestoreVolume();
|
||||
float GetSoundVolume();
|
||||
float GetMusicVolume();
|
||||
|
||||
// Sound
|
||||
void PlaySound2D(const char * c_szFileName);
|
||||
void PlaySound3D(float fx, float fy, float fz, const char * c_szFileName, int iPlayCount = 1);
|
||||
void StopSound3D(int iIndex);
|
||||
int PlayAmbienceSound3D(float fx, float fy, float fz, const char * c_szFileName, int iPlayCount = 1);
|
||||
void PlayCharacterSound3D(float fx, float fy, float fz, const char * c_szFileName, BOOL bCheckFrequency = FALSE);
|
||||
void SetSoundVolume3D(int iIndex, float fVolume);
|
||||
void StopAllSound3D();
|
||||
|
||||
// Music
|
||||
void PlayMusic(const char * c_szFileName);
|
||||
void FadeInMusic(const char * c_szFileName, float fVolumeSpeed = 0.016f);
|
||||
void FadeOutMusic(const char * c_szFileName, float fVolumeSpeed = 0.016f);
|
||||
void FadeLimitOutMusic(const char * c_szFileName, float fLimitVolume, float fVolumeSpeed = 0.016f);
|
||||
void FadeOutAllMusic();
|
||||
void FadeAll();
|
||||
|
||||
// Sound Node
|
||||
void UpdateSoundData(DWORD dwcurFrame, const NSound::TSoundDataVector * c_pSoundDataVector);
|
||||
void UpdateSoundData(float fx, float fy, float fz, DWORD dwcurFrame, const NSound::TSoundDataVector * c_pSoundDataVector);
|
||||
void UpdateSoundInstance(float fx, float fy, float fz, DWORD dwcurFrame, const NSound::TSoundInstanceVector * c_pSoundInstanceVector, BOOL bCheckFrequency = FALSE);
|
||||
void UpdateSoundInstance(DWORD dwcurFrame, const NSound::TSoundInstanceVector * c_pSoundInstanceVector);
|
||||
|
||||
protected:
|
||||
enum EMusicState
|
||||
{
|
||||
MUSIC_STATE_OFF,
|
||||
MUSIC_STATE_PLAY,
|
||||
MUSIC_STATE_FADE_IN,
|
||||
MUSIC_STATE_FADE_OUT,
|
||||
MUSIC_STATE_FADE_LIMIT_OUT,
|
||||
};
|
||||
typedef struct SMusicInstance
|
||||
{
|
||||
DWORD dwMusicFileNameCRC;
|
||||
EMusicState MusicState;
|
||||
float fVolume;
|
||||
float fLimitVolume;
|
||||
float fVolumeSpeed;
|
||||
} TMusicInstance;
|
||||
|
||||
void PlayMusic(DWORD dwIndex, const char * c_szFileName, float fVolume, float fVolumeSpeed);
|
||||
void StopMusic(DWORD dwIndex);
|
||||
BOOL GetMusicIndex(const char * c_szFileName, DWORD * pdwIndex);
|
||||
|
||||
protected:
|
||||
float __ConvertGradeVolumeToApplyVolume(int nVolumeGrade);
|
||||
float __ConvertRatioVolumeToApplyVolume(float fVolumeRatio);
|
||||
void __SetMusicVolume(float fVolume);
|
||||
BOOL GetSoundInstance2D(const char * c_szSoundFileName, ISoundInstance ** ppInstance);
|
||||
BOOL GetSoundInstance3D(const char * c_szFileName, ISoundInstance ** ppInstance);
|
||||
|
||||
protected:
|
||||
BOOL m_bInitialized;
|
||||
BOOL m_isSoundDisable;
|
||||
|
||||
float m_fxPosition;
|
||||
float m_fyPosition;
|
||||
float m_fzPosition;
|
||||
|
||||
float m_fSoundScale;
|
||||
float m_fAmbienceSoundScale;
|
||||
float m_fSoundVolume;
|
||||
float m_fMusicVolume;
|
||||
|
||||
float m_fBackupMusicVolume;
|
||||
float m_fBackupSoundVolume;
|
||||
|
||||
TMusicInstance m_MusicInstances[CSoundManagerStream::MUSIC_INSTANCE_MAX_NUM];
|
||||
std::map<std::string, float> m_PlaySoundHistoryMap;
|
||||
|
||||
static CSoundManager2D ms_SoundManager2D;
|
||||
static CSoundManager3D ms_SoundManager3D;
|
||||
static CSoundManagerStream ms_SoundManagerStream;
|
||||
};
|
||||
Reference in New Issue
Block a user