//Morukutsu - morukutsu [%$arobase$%] hotmail [%dot%] com
//[Source] CoreLeader file

#include "RessourceManager.h"

CRessourceManager::CRessourceManager()
{
    //MAJ de variables
    img_num = 0;
    imgList.clear();
}

CRessourceManager::~CRessourceManager()
{
    //Nettoyage
    imgList.clear();
}

UL_IMAGE* CRessourceManager::LoadImage(string filename, int location, int pixelFormat)
{
    //Verification de l'existance possible de l'image
    //Iterateur
    for(ImageList::iterator i = imgList.begin(); i!=imgList.end(); ++i)
    {  	
      	if(i->first == filename)
      	{
	      	//ulDebug("[Notif] Image deja chargée (%s)", filename.c_str() );
	      	return i->second;
    		}
    }

    //Chargement depuis le fichier
    UL_IMAGE* img;
    img = ulEFSLoadPNG((char*)filename.c_str(), location, pixelFormat);

    imgList[filename] = img;
    img_num++;

    //Envoi de l'image
    return imgList[filename];
}

void CRessourceManager::DeleteImage(UL_IMAGE* img)
{
   //On supprime l'image
   ulDeleteImage(img);
   img_num--;
   //Iterateur
   for(ImageList::iterator i = imgList.begin(); i!=imgList.end(); ++i)
   {
      if(i->second == img)
      {
         //ulDebug("Image supprimée (%s)\n", i->first.c_str());
         imgList.erase(i->first);
         break;
      }
   }
   
}

void CRessourceManager::Free()
{
   //On supprime les images
   img_num = 0;
   //Iterateur
   for(ImageList::iterator i = imgList.begin(); i != imgList.end();)
   {
      //ulDebug("Image supprimée (%s)\n", i->first.c_str());
      ulDeleteImage(i->second);
      imgList.erase(i++);
   }
   imgList.clear();
}

unsigned int CRessourceManager::GetImageCount()
{
    return img_num;
}

