You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
2.4 KiB
97 lines
2.4 KiB
//------------------------------------------------------------- |
|
//------------------------------------------------------------- |
|
//- |
|
//- 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
|
|
|