Switched around the texutre manager a bit internally, functions the same but it uses a Texture struct now

This commit is contained in:
Ben
2019-01-02 20:09:51 +00:00
parent a96893fabb
commit 9534207f03
4 changed files with 22 additions and 11 deletions

View File

@@ -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

Binary file not shown.

View File

@@ -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<std::string, SDL_Texture*>::iterator it = m_registerdTextures.begin(); it != m_registerdTextures.end(); it++) {
SDL_DestroyTexture(m_registerdTextures[it->first]);
for (std::map<std::string, Texture*>::iterator it = m_registerdTextures.begin(); it != m_registerdTextures.end(); it++) {
SDL_DestroyTexture(m_registerdTextures[it->first]->texture);
delete m_registerdTextures[it->first];
}
}

View File

@@ -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<std::string, std::string> m_textureSources;
std::map<std::string, SDL_Texture*> m_registerdTextures;
std::map<std::string, Texture*> m_registerdTextures;
Renderer* m_renderer;
};