#pragma once
#include <string>
#include <filesystem>
#include <memory>
#include <unordered_map>
#include <SFML/Audio.hpp>

namespace sound {
  struct SoundPair {
    std::shared_ptr<sf::SoundBuffer> buffer;
    std::shared_ptr<sf::Sound> sound;
  };

  struct SoundManager {
    std::unordered_map<std::string, SoundPair> sounds;
  };

  void init();
  void load(const std::string& name, const std::string& path);
  void play(const std::string& name, bool loop=false);
  void play_at(const std::string& name, float x, float y, float z);
  void stop(const std::string& name);
  void mute(bool setting);
  bool playing(const std::string& name);
  SoundPair& get_sound_pair(const std::string& name);
}
