#pragma once #include // Para SDL_Point #include // Para SDL_Renderer #include // Para string #include // Para vector 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 Asset *asset_; // Objeto con los ficheros de recursos Text *text_; // Objeto encargado de escribir texto en pantalla Texture *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(); 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); // Añade un texto para mostrar void add(std::string text); // Borra la información de debug void clear(); // Añade un texto para mostrar en el apartado log void addToLog(std::string text); // Borra la información de debug del apartado log void clearLog(); // Establece el valor de la variable void setEnabled(bool value); // Obtiene el valor de la variable bool getEnabled(); // Cambia el valor de la variable void switchEnabled(); };