summary refs log tree commit diff stats
path: root/src/renderer.cpp
diff options
context:
space:
mode:
authorKelly Rauchenberger <fefferburbia@gmail.com>2021-02-05 21:14:41 -0500
committerKelly Rauchenberger <fefferburbia@gmail.com>2021-02-05 21:14:41 -0500
commit64ad64ae11a9497f36258e1c83d23f7964bbf885 (patch)
tree9d96e640fbc0982d3faafddee8e8ffec3a44f3a0 /src/renderer.cpp
parent4d26b7cfd73cef00a7295e3ec9bf021506f0838c (diff)
downloadtanetane-64ad64ae11a9497f36258e1c83d23f7964bbf885.tar.gz
tanetane-64ad64ae11a9497f36258e1c83d23f7964bbf885.tar.bz2
tanetane-64ad64ae11a9497f36258e1c83d23f7964bbf885.zip
Prevented multiple loading of the same image files
Diffstat (limited to 'src/renderer.cpp')
-rw-r--r--src/renderer.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/renderer.cpp b/src/renderer.cpp index 4f5b4ff..0035ce2 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp
@@ -228,20 +228,24 @@ void Renderer::render(Game& game) {
228 SDL_RenderPresent(ren_.get()); 228 SDL_RenderPresent(ren_.get());
229} 229}
230 230
231int Renderer::loadImageFromFile(std::string_view filename) { 231int Renderer::loadImageFromFile(std::string filename) {
232 surface_ptr pfs(IMG_Load(filename.data())); 232 if (!filenameToTexId_.count(filename)) {
233 if (!pfs) 233 surface_ptr pfs(IMG_Load(filename.data()));
234 { 234 if (!pfs)
235 throw img_error(); 235 {
236 } 236 throw img_error();
237 }
237 238
238 texture_ptr tex = texture_ptr(SDL_CreateTextureFromSurface(ren_.get(), pfs.get())); 239 texture_ptr tex = texture_ptr(SDL_CreateTextureFromSurface(ren_.get(), pfs.get()));
239 //SDL_SetTextureBlendMode(tex, SDL_BLENDMODE_BLEND); 240 //SDL_SetTextureBlendMode(tex, SDL_BLENDMODE_BLEND);
240 241
241 int texId = textures_.size(); 242 int texId = textures_.size();
242 textures_.push_back(std::move(tex)); 243 textures_.push_back(std::move(tex));
244
245 filenameToTexId_[filename] = texId;
246 }
243 247
244 return texId; 248 return filenameToTexId_[filename];
245} 249}
246 250
247void Renderer::renderMessageLine(MessageCache& line, const std::string& text, Game& game) { 251void Renderer::renderMessageLine(MessageCache& line, const std::string& text, Game& game) {