Gestion des polices dans le gestionnaire de ressources

This commit is contained in:
Mattéo Delabre 2016-04-05 17:37:43 +02:00
parent a6d39aab3d
commit b11684b906
2 changed files with 25 additions and 0 deletions

View File

@ -9,6 +9,7 @@
class ResourceManager {
private:
std::map<std::string, sf::Texture> textures;
std::map<std::string, sf::Font> fonts;
sf::Music music;
public:
@ -22,6 +23,13 @@ public:
*/
sf::Texture& getTexture(std::string name);
/**
* Récupère la police demandée. Réutilise une police
* déjà chargée si elle a déjà é demandée, sinon, la
* charge depuis son emplacement
*/
sf::Font& getFont(std::string name);
/**
* Change la musique en lecture de fond
* Doit être utilisé pour la lecture en continu

View File

@ -56,6 +56,23 @@ sf::Texture& ResourceManager::getTexture(std::string name) {
return textures[name];
}
sf::Font& ResourceManager::getFont(std::string name) {
// si la police est déjà chargée, on l'utilise directement
if (fonts.count(name) > 0) {
return fonts[name];
}
sf::Font font;
// tente de charger la police dans le chemin "CWD/res/name"
if (!font.loadFromFile(getResourcePath(name))) {
throw std::runtime_error("Impossible de charger la police : " + name);
}
fonts[name] = font;
return fonts[name];
}
void ResourceManager::setMusic(std::string name) {
if (!music.openFromFile(getResourcePath(name))) {
throw std::runtime_error("Impossible de charger la musique : " + name);