peter1138@7666: /* $Id$ */ peter1138@7666: rubidium@10429: /** @file music_driver.hpp Base for all music playback. */ rubidium@10429: peter1138@7666: #ifndef MUSIC_MUSIC_DRIVER_HPP peter1138@7666: #define MUSIC_MUSIC_DRIVER_HPP peter1138@7666: peter1138@7666: #include "../driver.h" peter1138@7666: peter1138@7666: class MusicDriver: public Driver { peter1138@7666: public: peter1138@7666: virtual void PlaySong(const char *filename) = 0; peter1138@7666: peter1138@7666: virtual void StopSong() = 0; peter1138@7666: peter1138@7666: virtual bool IsSongPlaying() = 0; peter1138@7666: peter1138@7666: virtual void SetVolume(byte vol) = 0; peter1138@7666: }; peter1138@7666: peter1138@7666: class MusicDriverFactoryBase: public DriverFactoryBase { peter1138@7666: }; peter1138@7666: peter1138@7666: template peter1138@7666: class MusicDriverFactory: public MusicDriverFactoryBase { peter1138@7666: public: peter1138@7689: MusicDriverFactory() { this->RegisterDriver(((T *)this)->GetName(), Driver::DT_MUSIC, ((T *)this)->priority); } peter1138@7666: peter1138@7666: /** peter1138@7666: * Get the long, human readable, name for the Driver-class. peter1138@7666: */ peter1138@7666: const char *GetName(); peter1138@7666: }; peter1138@7666: peter1138@7666: extern MusicDriver *_music_driver; rubidium@8771: extern char _ini_musicdriver[32]; peter1138@7666: peter1138@7666: #endif /* MUSIC_MUSIC_DRIVER_HPP */