//------------------------------------------------------------- //------------------------------------------------------------- //- //- clientmusic.h //- //------------------------------------------------------------- //------------------------------------------------------------- //- by Roy at suggestion by nekonomicon, based on code by JujU //------------------------------------------------------------- //- mp3 player code for HL mod //------------------------------------------------------------- //- //- compatible with version 0.11.9 of Miniaudio //- https://github.com/mackron/miniaudio //- //------------------------------------------------------------- #ifndef CLIENTMUSIC_H #define CLIENTMUSIC_H #define MINIAUDIO_IMPLEMENTATION #if _WIN32 #define HSPRITE WINDOWS_HSPRITE //Apparently miniaudio introduces a win32 conflict here. #endif #include "../miniaudio/miniaudio.h" #if _WIN32 #undef HSPRITE #endif //--------------------------------------------------------- // defines #define MUSIC_AUDIO_FILE 1 #define MUSIC_LIST_FILE 0 //--------------------------------------------------------- // audio file structure struct audiofile_t { char name [128]; int repeat; audiofile_t *next; }; //--------------------------------------------------------- // reader class class CMusic //: public CHudBase { public: // reading functions void OpenFile ( char *filename, int repeat ); // open a single file void OpenList ( char *filename ); // opening a text file containing the files void Init ( void ); // initialization void Play ( void ); // playback void Stop ( void ); // stop void Reset ( void ); // pause and switch to next track void Terminate ( void ); // clean-up during termination // variables bool m_IsPlaying; // monitors whether the music is played, used to pause the music bool m_bInit; // checks if the player is initialized audiofile_t *m_pTrack; // playlist items // constructor / destructor CMusic () { m_bInit = false; m_IsPlaying = false; m_pTrack = NULL; Reset(); }; ~CMusic () { Terminate(); }; // object instances ma_result result; ma_decoder decoder; ma_device_config deviceConfig; ma_device device; // messages int MsgFunc_CMusicOpen ( const char *pszName, int iSize, void *pbuf ); // monitoring functions void songEnd(); }; extern CMusic g_MusicPlayer; #endif // CLIENTMUSIC_H