00001
00002
00003
00004
00005
00006 #ifndef _RainMusich
00007 #define _RainMusich
00008
00009 #include <dmusicc.h>
00010 #include <dmusici.h>
00011 #include <windows.h>
00012
00013
00015
00017
00019 #define REPEAT_FOREVER DMUS_SEG_REPEAT_INFINITE
00020
00021 #define MAX_VOLUME 1000
00022
00023 #define MIN_VOLUME 10
00024
00028 #define AUDIO_TYPE_MUSIC 0
00029
00032 #define AUDIO_TYPE_SOUND 1
00033
00034
00036
00038
00039 {
00040 char FileName[MAX_PATH];
00041 FileNameNode* NextNode;
00042 } FileNameNode;
00043
00044
00047 class FileNameContainer
00048 {
00049 friend class AllAudio;
00050
00051 protected:
00052
00053 FileNameNode* m_pFileNameList;
00054 UINT m_uTotalFileNames;
00055 bool m_bType;
00056
00057 public:
00058
00059 FileNameContainer( void );
00062 ~FileNameContainer( void );
00065 void SetType(bool bNewType);
00068 bool GetType( void );
00071 UINT GetTotalFileNames( void );
00074 int GetFileNameBI(UINT uIndex, char* szBuffer);
00077 void AddFileName(char* szFileName);
00079 };
00080
00082
00089 class RainDMPerf8
00090 {
00091 friend class AllAudio;
00092
00093 protected:
00094
00095 IDirectMusicPerformance8* m_pPerformance;
00096 IDirectMusicSegment8** m_ppSegment;
00097 bool m_bHavePrimarySegment;
00098
00099 public:
00100
00101 RainDMPerf8( void );
00104 ~RainDMPerf8( void );
00107 HRESULT Initialize(char** p_szSongNameArray, UINT uMaxSizeOfArray, IDirectMusicLoader8** ppLoader);
00111 HRESULT SetTrackFile(char* szFile, UINT uIdx, IDirectMusicLoader8** ppLoader);
00115
00116 HRESULT PlayTrack(UINT uIdx, DWORD dwRepeats);
00121 HRESULT Stop( void );
00123 };
00124
00126
00136 class AllAudio
00137 {
00138 protected:
00139
00140 IDirectMusicLoader8* m_pLoader;
00141 RainDMPerf8* m_pPerfMusic;
00142 RainDMPerf8* m_pPerfSound;
00143
00144
00145 int CreateSongNameArrayFromList(FileNameContainer fncSongFileNames, char** p_szBuffer);
00146
00147 public:
00148
00149 AllAudio( void );
00152 ~AllAudio( void );
00155 HRESULT Initialize(FileNameContainer* fncMusicFileNames, FileNameContainer* fncSoundFileNames, char* szBasePath);
00158 HRESULT SetBasePath(char* szBasePath);
00161 HRESULT SetMusicFile(UINT uStringTableIndex);
00164 HRESULT PlaySoundBI(UINT uIdx, DWORD dwRepeats);
00167 HRESULT PlayMusic( void );
00170 HRESULT StopMusic( void );
00173 HRESULT StopAllSounds( void );
00176 HRESULT SetMusicVolume(DWORD dwVolume);
00179 HRESULT SetSoundVolume(DWORD dwVolume);
00181 };
00182
00183 #endif