#include "TexturLoader.h"

TexturLoader::TexturLoader() : m_folder("")
{
    // Constructeur par défaut
}

TexturLoader::TexturLoader(std::string folder) : m_folder(folder)
{
    // Constructeur avec implémentation du dossier cible
}

TexturLoader::~TexturLoader()
{
    for( m_it = m_paquet.begin(); m_it != m_paquet.end(); m_it++ )
    {
        delete m_it->second;
        m_it->second = 0x0;
    }
}

GLuint TexturLoader::take(std::string nom)
{
    // Cherche la texture dans le tableau
    m_it = m_paquet.find(nom);

    // Si la texture est déjà chargée, on la donne
    if (m_it != m_paquet.end())
        return m_it->second->getID();

    // Sinon on la charge
    else
    {
        m_paquet[nom] = new Texture(m_folder + nom + ".bmp");

        return m_paquet[nom]->getID();
    }
}

void TexturLoader::addTextur(std::string nom, Texture* sampler)
{
    m_it = m_paquet.find(nom);
    if (m_it == m_paquet.end())
    {
        m_paquet[nom] = sampler;
        return;
    }
    else
    {
        std::cout << "Attention ! La texture " <<nom<< " a déjà une surface associée. Destruction de la nouvelle surface." << std::endl;
        delete sampler;
    }
}

void TexturLoader::assignFolder(std::string folder)
{
    m_folder = folder;
}

