#pragma once #include #include #include #include "../util/physfs.hpp" namespace game::resource { class Audio { static MIX_Mixer* mixer_get(); void unload(); std::shared_ptr internal{}; MIX_Track* track{nullptr}; public: Audio() = default; Audio(const std::filesystem::path&); Audio(const util::physfs::Path&); Audio(const Audio&); Audio(Audio&&) noexcept; Audio& operator=(const Audio&); Audio& operator=(Audio&&) noexcept; ~Audio(); bool is_valid() const; void play(bool isLoop = false); void stop(); bool is_playing() const; static void volume_set(float volume); }; }