#include "TextureManager.h" TextureManager* TextureManager::instance = NULL; TextureManager::TextureManager() { //nada } TextureManager* TextureManager::GetInstance () { if (instance == NULL) // ¿Es la primera llamada? { instance = new TextureManager; // Creamos la instancia } return instance; // Retornamos la dirección de la instancia } const sf::Texture &TextureManager::GetTexture(string filename){ // buscamos la textura pedida map<string, sf::Texture>::iterator p; p=textures.find(filename); // si no la encontramos if(p==textures.end()){ // la cargamos desde el archivo sf::Texture textureTemp; textureTemp.loadFromFile(filename); // y la insertamos en el mapa pair< map<string, sf::Texture>::iterator, bool > q; q=textures.insert(pair<string, sf::Texture>(filename, textureTemp)); // hacemos que p apunte a la imagen insertada p=q.first; } // devolvemos la imagen return p->second; } unsigned TextureManager::Size(){ // ¿Cuantas texturas tengo? return textures.size(); }
Así se usa
TextureManager * tm = TextureManager::GetInstance(); sf::Sprite box1; box1.setTexture( tm->GetTexture("box_sprites.png") );