#include "sfml/backend.hpp"
#include "sfml/shaders.hpp"
#include "sfml/sound.hpp"
#include "sfml/textures.hpp"

namespace sfml {
  guecs::SpriteTexture Backend::texture_get(const string& name) {
    auto sp = textures::get(name);
    return {sp.sprite, sp.texture};
  }

  Backend::Backend() {
    sound::init();
    shaders::init();
    textures::init();
  }

  void Backend::sound_play(const string& name) {
    sound::play(name);
  }

  void Backend::sound_stop(const string& name) {
    sound::stop(name);
  }

  std::shared_ptr<sf::Shader> Backend::shader_get(const std::string& name) {
    return shaders::get(name);
  }

  bool Backend::shader_updated() {
    if(shaders::updated($shaders_version)) {
      $shaders_version = shaders::version();
      return true;
    } else {
      return false;
    }
  }
}
