SpriteLoader.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include "SpriteLoader.h"
  2. SpriteLoader::SpriteLoader() : m_folder("")
  3. {
  4. }
  5. SpriteLoader::SpriteLoader(std::string folder) : m_folder(folder)
  6. {
  7. }
  8. SpriteLoader::~SpriteLoader()
  9. {
  10. for( m_it = m_paquet.begin(); m_it != m_paquet.end(); m_it++ )
  11. {
  12. SDL_FreeSurface(m_it->second);
  13. m_it->second = 0x0;
  14. }
  15. }
  16. SDL_Surface* SpriteLoader::takeSprite(std::string nom)
  17. {
  18. // Cherche la surface dans le tableau
  19. m_it = m_paquet.find(nom);
  20. // Si la surface est déjà chargée, on la donne
  21. if (m_it != m_paquet.end())
  22. return m_it->second;
  23. // Sinon on la charge
  24. else
  25. {
  26. std::string source(m_folder + nom + ".bmp");
  27. m_paquet[nom] = SDL_LoadBMP(source.c_str());
  28. if (m_paquet[nom] == 0)
  29. {
  30. m_paquet[nom] = SDL_CreateRGBSurface(SDL_HWSURFACE, 40, 40, 32, 0, 0, 0, 0);
  31. std::cout << "La texture " <<nom<< " n'a pas pu être chargée." << std::endl << std::endl;
  32. }
  33. else
  34. std::cout << "La texture " <<nom<< " est maintenant chargée." << std::endl << std::endl;
  35. return m_paquet[nom];
  36. }
  37. }
  38. void SpriteLoader::addSprite(std::string nom, SDL_Surface* sprite)
  39. {
  40. m_it = m_paquet.find(nom);
  41. if (m_it == m_paquet.end())
  42. {
  43. m_paquet[nom] = sprite;
  44. return;
  45. }
  46. else
  47. {
  48. std::cout << "Attention ! La texture " <<nom<< " a déjà une surface associée. Destruction de la nouvelle surface." << std::endl;
  49. SDL_FreeSurface(sprite);
  50. }
  51. }
  52. void SpriteLoader::assignFolder(std::string folder)
  53. {
  54. m_folder = folder;
  55. }