#ifndef _SoundManager_H_ #define _SoundManager_H_ #include "STL.h" #include "SoundGlobal.h" ///////////////////////////////////////////////////////////////////////////////////////// // Àü¹æ ÂüÁ¶ #define DSSCL_NORMAL 0x00000001 #define DSSCL_PRIORITY 0x00000002 #define DSSCL_EXCLUSIVE 0x00000003 #define DSSCL_WRITEPRIMARY 0x00000004 class ISoundObject; class CSoundBuffer; class CDirectSound; class CDirectMusic; class IStreamHandler; struct CompareResource; typedef struct HWND__* HWND; typedef unsigned long DWORD; ///////////////////////////////////////////////////////////////////////////////////////// // ±âº»ÀûÀ¸·Î ¸Þ¸ð¸® »ç¿ë ÇѰè´Â 5MB·Î ÀâÇôÀÖÀ½. class CSoundManager { public: typedef void (*REPORTFUNC)( const char * ); public: enum eState { STATE_USING, STATE_UNUSE, STATE_DELETED }; struct Resource { int used; //¸î ¹øÀ̳ª »ç¿ë µÆ´Â°¡? DWORD time; //»ç¿ëÀÌ ½ÃÀÛ ½Ã°£ ¶Ç´Â »ç¿ëÀÌ ³¡³­ ½Ã°¢ ¶Ç´Â Æó±âµÈ ½Ã°¢ ISoundObject * pSndBuf; eState state; }; public: typedef map RESOURCES; //Using, Unuse ¸®½ºÆ®µé¿¡¼­ Resource¸¦ ÂüÁ¶ÇØ¾ß ÇϹǷΠ¿©±â¿¡ ResourceÀÇ Æ÷ÀÎÅÍ·Î ÀúÀåÇÔ. typedef set RESLIST; protected: CDirectSound & m_DSound; CDirectMusic & m_DMusic; bool m_bDSoundEnable; bool m_bDMusicEnable; CompareResource * m_pComparer; RESOURCES * m_pResources; RESLIST * m_pUsingList; RESLIST * m_pUnuseList; RESLIST * m_pDeletedList; IStreamHandler* m_pStreamUpdater; REPORTFUNC ReportFunc; //µð¹ö±×¿ë ¸®Æ÷Æ® ÇÔ¼ö protected: CSoundManager(); void Caching(); RESLIST * GetListOfState( eState ); eState GetStateOfList( RESLIST * ); void MoveResourceTo( Resource &, RESLIST * ); void CreateSoundBuffer( Resource &, const char *, bool, bool, int, DWORD ); Resource & AddResource( const char * szFilename, bool b3DSound, bool bStream, int, DWORD ); void UseResource( Resource & res ); void UnuseResource( Resource & res ); public: //--------------ÀÎÅÍÆäÀ̽º---------------// static CSoundManager & GetInstance(); ~CSoundManager(); void Create( HWND, DWORD = DSSCL_PRIORITY ); void Destroy(); void SetMemoryLimit( DWORD limit ) {} void SetReportFunc( REPORTFUNC func ) { ReportFunc = func; } //µð¹ö±×¿ë CDirectSound & GetDirectSound(); CDirectMusic & GetDirectMusic() { return m_DMusic; } DWORD GetMemoryUse() {} ISoundObject & GetBuffer( const char * szFilename, bool b3DSound = false, bool bStream = false, int nBuf = 10, DWORD dwAddFlag = 0 ); bool ReleaseBuffer( ISoundObject & ) { return false; } void Update(); //StreamBuffer¸¦ Çϳª¶óµµ ¾µ °æ¿ì¿¡¸¸.. //----------------------------------------// }; ///////////////////////////////////////////////////////////////////////////////////////// #endif