#ifndef TextureManager_HPP
#define TextureManager_HPP

#include <iostream>
#include <string>
#include <map>
#include <vector>

class TextureManager
{
  std::string presetURL;
  std::map<std::string,unsigned int> textures;
  std::map<std::string,unsigned int> heights;
  std::map<std::string,unsigned int> widths;
  std::vector<unsigned int> user_textures;
  std::vector<std::string> user_texture_names;
  std::vector<std::string> random_textures;
public:
  ~TextureManager();
  TextureManager(std::string _presetURL);
  //void unloadTextures(const PresetOutputs::cshape_container &shapes);
  void Clear();
  void Preload();
  unsigned int getTexture(const std::string filenamne);
  unsigned int getTextureFullpath(const std::string filename, const std::string imageUrl);
  unsigned int getTextureMemorySize();
  int getTextureWidth(const std::string imageUrl);
  int getTextureHeight(const std::string imageUrl);
  void setTexture(const std::string name, const unsigned int texId, const int width, const int height);
  void loadTextureDir();
  std::string getRandomTextureName(std::string rand_name);
  void clearRandomTextures();
};

#endif