diff --git a/TODO.txt b/TODO.txt index 2f4469c..cfa74b4 100644 --- a/TODO.txt +++ b/TODO.txt @@ -16,6 +16,9 @@ x -> complete [x] Dot product [x] Cross product (3d) [ ] Other functions for max, min, magnitude, unitvec all that +[ ] Resource management + [ ] Texture map class, owned by entity, stores texture references from the textrue manager + [ ] Sound at some point [ ] Entity system [ ] Entity manager [ ] Ability to make entities and manage textures between them diff --git a/bin/crumpet-engine b/bin/crumpet-engine index ba06b26..d7bef7d 100755 Binary files a/bin/crumpet-engine and b/bin/crumpet-engine differ diff --git a/src/crumpet-engine/resourcemanager/texturemanager.cpp b/src/crumpet-engine/resourcemanager/texturemanager.cpp index 14e1477..ce366fb 100644 --- a/src/crumpet-engine/resourcemanager/texturemanager.cpp +++ b/src/crumpet-engine/resourcemanager/texturemanager.cpp @@ -20,8 +20,8 @@ bool TextureManager::registerTexture(std::string textureSource, std::string text } SDL_FreeSurface(loadSurface); - m_textureSources[textureName] = textureSource; - m_registerdTextures[textureName] = texture; + Texture* temp = new Texture(textureName, textureSource, texture); + m_registerdTextures[textureName] = temp; Logger::info("Loaded texture " + textureSource + " as " + textureName); @@ -29,22 +29,21 @@ bool TextureManager::registerTexture(std::string textureSource, std::string text } void TextureManager::unregisterTexture(std::string textureName) { - SDL_DestroyTexture(m_registerdTextures[textureName]); - - delete &m_textureSources[textureName]; + SDL_DestroyTexture(m_registerdTextures[textureName]->texture); delete &m_registerdTextures[textureName]; } SDL_Texture* TextureManager::getTexture(std::string textureName) { - return m_registerdTextures[textureName]; + return m_registerdTextures[textureName]->texture; } std::string TextureManager::getTextureSource(std::string textureName) { - return m_textureSources[textureName]; + return m_registerdTextures[textureName]->source; } TextureManager::~TextureManager() { - for (std::map::iterator it = m_registerdTextures.begin(); it != m_registerdTextures.end(); it++) { - SDL_DestroyTexture(m_registerdTextures[it->first]); + for (std::map::iterator it = m_registerdTextures.begin(); it != m_registerdTextures.end(); it++) { + SDL_DestroyTexture(m_registerdTextures[it->first]->texture); + delete m_registerdTextures[it->first]; } } diff --git a/src/crumpet-engine/resourcemanager/texturemanager.h b/src/crumpet-engine/resourcemanager/texturemanager.h index 3593df9..7fbb250 100644 --- a/src/crumpet-engine/resourcemanager/texturemanager.h +++ b/src/crumpet-engine/resourcemanager/texturemanager.h @@ -8,6 +8,16 @@ #include "../renderengine/renderer.h" +struct Texture { + Texture(std::string name, std::string source, SDL_Texture* texture) + : name(name), source(source), texture(texture) { } + Texture(std::string name, std::string source) + : name(name), source(source) { } + std::string name; + std::string source; + SDL_Texture* texture; +}; + class TextureManager { public: TextureManager(Renderer* renderer); @@ -19,7 +29,6 @@ public: virtual ~TextureManager(); private: - std::map m_textureSources; - std::map m_registerdTextures; + std::map m_registerdTextures; Renderer* m_renderer; };