#ifndef AUDIO_HPP
#define AUDIO_HPP

// Détection du système cible...
#include "usgeDetectSystem.h"

namespace USpeedGameEngine
{

class Audio
{
    /****************
    * Les attributs *
    ****************/
    public :
    protected :
    private :
        unsigned int currentType;           //!< Le type de lecteur (WAV/MOD/...)
        unsigned char wavChannel;           //!< Le canal du Wave courant
        #ifdef TARGET_SYSTEM_PSP
            void *waveInfos;                //!< Les informations sur le fichier WAVE éventuel
        #endif

    /***************
    * Les méthodes *
    ***************/
    public :
        // Constructeur par défaut
        Audio();
        // Destructeur par défaut
        ~Audio();
        // Initialise le son
        static bool init();
        // Permet de charger le fichier son WAVE
        bool loadWave(const char *filename);
        bool loadWaveFromBuffer(const char *myDatas, unsigned int dataSize);
        // Permet de charger le fichier son MODULE (écrase le précédent)
        bool loadModule(const char *filename, bool stopPrevious);
        bool loadModule(const char *filename);
        // Permet de charger le son MODULE depuis un tampon mémoire (écrase le précédent)
        bool loadModuleFromBuffer(const char *myDatas, unsigned int dataSize, bool stopPrevious);
        bool loadModuleFromBuffer(const char *myDatas, unsigned int dataSize);
        // Permet de lancer la lecture du son
        void play();
        // Arrêter la lecture (remise à zéro aussi)
        void stop();
        // Mettre en pause
        void wait();
        // Ajuster le volume audio
        void volume(unsigned int percent);
        // Permet de revenir au début de la piste
        void restart();
        // Permet de lire la piste en boucle ou non
        void loop(bool looping);
        // Remet à zéro l'état de l'instance
        void reset();

    protected :
    private :
};

}

#endif
