diff options
author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2021-02-05 21:14:41 -0500 |
---|---|---|
committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2021-02-05 21:14:41 -0500 |
commit | 64ad64ae11a9497f36258e1c83d23f7964bbf885 (patch) | |
tree | 9d96e640fbc0982d3faafddee8e8ffec3a44f3a0 /src/renderer.cpp | |
parent | 4d26b7cfd73cef00a7295e3ec9bf021506f0838c (diff) | |
download | tanetane-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.cpp | 26 |
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 | ||
231 | int Renderer::loadImageFromFile(std::string_view filename) { | 231 | int 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 | ||
247 | void Renderer::renderMessageLine(MessageCache& line, const std::string& text, Game& game) { | 251 | void Renderer::renderMessageLine(MessageCache& line, const std::string& text, Game& game) { |