12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #include "SpriteLoader.h"
- SpriteLoader::SpriteLoader() : m_folder("")
- {
- }
- SpriteLoader::SpriteLoader(std::string folder) : m_folder(folder)
- {
- }
- 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;
- }
- else
- std::cout << "La texture " <<nom<< " est maintenant chargée." << std::endl << std::endl;
- return m_paquet[nom];
- }
- }
- 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;
- }
|