SpriteLoader.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. return m_paquet[nom];
  34. }
  35. }
  36. void SpriteLoader::addSprite(std::string nom, SDL_Surface* sprite)
  37. {
  38. m_it = m_paquet.find(nom);
  39. if (m_it == m_paquet.end())
  40. {
  41. m_paquet[nom] = sprite;
  42. return;
  43. }
  44. else
  45. {
  46. std::cout << "Attention ! La texture " <<nom<< " a déjà une surface associée. Destruction de la nouvelle surface." << std::endl;
  47. SDL_FreeSurface(sprite);
  48. }
  49. }
  50. void SpriteLoader::assignFolder(std::string folder)
  51. {
  52. m_folder = folder;
  53. }