farmlands/src/resources/ResourceManager/ResourceManager_Textures.cpp

49 lines
989 B
C++

/*
* ResourceManager_Textures.cpp
*
* Created on: Nov 12, 2016
* Author: tibi
*/
#include <GameState.h>
#include <resources/ResourceManager.h>
#include <resources/Resources.h>
#include <cassert>
namespace farmlands {
namespace resources {
void ResourceManager::loadTexture(int resourceId)
{
assert(RInfo[resourceId].type == ResourceType::Texture);
// Open file
SDL_Surface* surface = IMG_Load(getPath(resourceId).c_str());
if (surface == NULL)
throw 0; // TODO: error handling
SDL_Texture* texture = SDL_CreateTextureFromSurface(m_gameState->sdlRenderer.internalRenderer(), surface);
if (texture == NULL)
throw 0; // TODO: error handling
m_loadedResources[resourceId].loaded = true;
m_loadedResources[resourceId].texture.surface = surface;
m_loadedResources[resourceId].texture.texture = texture;
}
SDL_Texture* ResourceManager::texture(int id)
{
assert(RInfo[id].type == ResourceType::Texture);
return m_loadedResources[id].texture.texture;
}
}
}