123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- #include "SpriteLoader.h"
- SpriteLoader::SpriteLoader()
- : m_folder(""), m_optiFormat(true)
- {}
- SpriteLoader::SpriteLoader(std::string folder)
- : m_folder(folder), m_optiFormat(true)
- {}
- SpriteLoader::SpriteLoader(std::string folder, bool optiFormat)
- : m_folder(folder), m_optiFormat(optiFormat)
- {}
- SpriteLoader::~SpriteLoader()
- {
- for( m_it = m_paquet.begin(); m_it != m_paquet.end(); m_it++ )
- {
- SDL_FreeSurface(m_it->second);
- m_it->second = 0x0;
- }
- }
- SDL_Surface* SpriteLoader::takeSprite(std::string nom)
- {
- // Cherche la surface dans le tableau
- m_it = m_paquet.find(nom);
- // Si la surface est déjà chargée, on la donne
- if (m_it != m_paquet.end())
- {
- return m_it->second;
- }
- // Sinon on la charge
- else
- {
- std::string source(m_folder + nom + ".bmp");
- m_paquet[nom] = SDL_LoadBMP(source.c_str());
- if (m_paquet[nom] == 0)
- {
- m_paquet[nom] = SDL_CreateRGBSurface(SDL_HWSURFACE, 40, 40, 32, 0, 0, 0, 0);
- std::cout << "La texture " <<nom<< " n'a pas pu être chargée." << std::endl << std::endl;
- }
- // Si on doit optimiser
- if (m_optiFormat)
- {
- SDL_Surface* src = m_paquet[nom];
- m_paquet[nom] = SDL_DisplayFormat(src);
- SDL_FreeSurface(src);
- }
- return m_paquet[nom];
- }
- }
- void SpriteLoader::destroySprite(std::string nom)
- {
- // Cherche la surface dans le tableau
- m_it = m_paquet.find(nom);
- // Si la surface est déjà chargée, on la donne
- if (m_it != m_paquet.end())
- {
- SDL_FreeSurface(m_it->second);
- m_paquet.erase(m_it);
- }
- }
- void SpriteLoader::addSprite(std::string nom, SDL_Surface* sprite)
- {
- m_it = m_paquet.find(nom);
- if (m_it == m_paquet.end())
- {
- m_paquet[nom] = sprite;
- return;
- }
- else
- {
- std::cout << "Attention ! La texture " <<nom<< " a déjà une surface associée. Destruction de la nouvelle surface." << std::endl;
- SDL_FreeSurface(sprite);
- }
- }
- void SpriteLoader::assignFolder(std::string folder)
- {
- m_folder = folder;
- }
|