#pragma once #include // Para SDL_Point #include // Para SDL_Renderer #include // Para string #include // Para vector #include class Asset; class Screen; class Text; class Texture; // Clase Debug class Debug { private: // [SINGLETON] Objeto privado static Debug *debug_; // Objetos y punteros Screen *screen_; // Objeto encargado de dibujar en pantalla SDL_Renderer *renderer_; // El renderizador de la ventana std::shared_ptr text_; // Objeto encargado de escribir texto en pantalla std::shared_ptr texture_; // Textura para el texto // Variables std::vector slot_; // Vector con los textos a escribir std::vector log_; // Vector con los textos a escribir int x_ = 0; // Posicion donde escribir el texto de debug int y_ = 0; // Posición donde escribir el texto de debug bool enabled_ = false; // Indica si esta activo el modo debug // Constructor Debug(); // Destructor ~Debug() = default; public: // [SINGLETON] Crearemos el objeto con esta función estática static void init(); // [SINGLETON] Destruiremos el objeto con esta función estática static void destroy(); // [SINGLETON] Con este método obtenemos el objeto y podemos trabajar con él static Debug *get(); // Actualiza las variables void update(); // Dibuja en pantalla void render(); // Establece la posición donde se colocará la información de debug void setPos(SDL_Point p); // Getters bool getEnabled() { return enabled_; } // Setters void add(std::string text) { slot_.push_back(text); } void clear() { slot_.clear(); } void addToLog(std::string text) { log_.push_back(text); } void clearLog() { log_.clear(); } void setEnabled(bool value) { enabled_ = value; } void switchEnabled() { enabled_ = !enabled_; } };