2D_Engine/TextureManager.hpp

38 lines
1.3 KiB
C++

/********************\
| Copyright 2024, |
| Ulysse Cura |
\********************/
/////////////////////////////////////////////////////////////////////////
// //
// Declaration de la classe TextureManager, elle sert a charger des //
// texture dans la memoire pour eviter de les recharger tout le temps. //
// //
/////////////////////////////////////////////////////////////////////////
#ifndef TEXTURE_MANAGER_HPP
#define TEXTURE_MANAGER_HPP
#include <memory>
#include <SDL2/SDL.h>
#include <string>
#include <unordered_map>
using std::string, std::unique_ptr, std::unordered_map;
class TextureManager {
public:
SDL_Texture *LoadTexture(const string &); // Renvoie une texture depuis l'unordered_map ou charge depuis le disque puis renvoie la texture
void Draw(SDL_Texture *, SDL_Rect, SDL_Rect, bool); // Dessine la texture passé sur l'écran
void Erase(const string &); // Efface dans l'unordered_map la texture correspondante
void Clear(); // Clear tout l'unordered_map
private:
using texture_ptr = unique_ptr<SDL_Texture, decltype(&SDL_DestroyTexture)>;
unordered_map<string, texture_ptr> m_textures;
};
#endif