#pragma once #include #include struct Mix_Music; namespace extra2d { class Music : public RefCounted { public: Music(); ~Music() override; bool loadFromFile(const std::string &path); void unload(); bool play(int loops = -1); void stop(); void pause(); void resume(); bool isLoaded() const { return music_ != nullptr; } bool isPlaying() const; static bool initAudio(); static void shutdownAudio(); static bool isAudioReady(); private: Mix_Music *music_ = nullptr; }; } // namespace extra2d