diff options
Diffstat (limited to 'src/ResourceCache.cpp')
-rw-r--r-- | src/ResourceCache.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/ResourceCache.cpp b/src/ResourceCache.cpp new file mode 100644 index 0000000..474360c --- /dev/null +++ b/src/ResourceCache.cpp @@ -0,0 +1,29 @@ +#include "../include/ResourceCache.hpp" +#include <unordered_map> +#include <stdexcept> + +using namespace std; + +namespace dchat +{ + unordered_map<string, sf::Font*> fonts; + + const sf::Font& ResourceCache::getFont(const string &filepath) + { + auto it = fonts.find(filepath); + if(it != fonts.end()) + return *it->second; + + sf::Font *font = new sf::Font(); + if(!font->loadFromFile(filepath)) + { + delete font; + string errMsg = "Failed to load font: "; + errMsg += filepath; + throw runtime_error(errMsg); + } + + fonts[filepath] = font; + return *font; + } +} |