#pragma once
#include <cstdint>
#include <vector>
#include <string>
#include <SFML/Graphics.hpp>
#include <unordered_map>
#include <memory>

namespace textures {

  struct SpriteTexture {
    std::shared_ptr<sf::Sprite> sprite = nullptr;
    std::shared_ptr<sf::Texture> texture = nullptr;
  };

  struct TextureManager {
    std::vector<sf::Image> surfaces;
    std::unordered_map<std::string, SpriteTexture> sprite_textures;
    std::unordered_map<wchar_t, int> char_to_texture;
  };

  void init();

  SpriteTexture get(const std::string& name);

  sf::Image load_image(const std::string& filename);
}