#pragma once #include // Para SDL_FRect #include // Para SDL_Renderer, SDL_Texture #include // Para std::string #include // Para std::vector class Texture { private: SDL_Renderer *renderer_; SDL_Texture *texture_; // Dimensiones de la imagen int width_; int height_; public: // Sistema de recursos empaquetados (inicializar desde main) static void initResourceSystem(const std::string& packFilePath); static std::vector getPackResourceList(); static bool isPackLoaded(); // Inicializa las variables explicit Texture(SDL_Renderer *renderer); Texture(SDL_Renderer *renderer, const std::string &file_path); // Libera la memoria ~Texture(); // Carga una imagen desde la ruta especificada bool loadFromFile(const std::string &path); // Libera la textura void free(); // Renderiza la textura en el punto especificado void render(SDL_FRect *src = nullptr, SDL_FRect *dst = nullptr); // Obtiene las dimensiones de la imagen int getWidth(); int getHeight(); // Modula el color de la textura void setColor(int r, int g, int b); // Getter para batch rendering SDL_Texture *getSDLTexture() const { return texture_; } };