Files
jaildoctors_dilemma/source/debug.cpp

78 lines
1.5 KiB
C++

#include "debug.h"
#include <algorithm> // Para max
#include "asset.h" // Para Asset
#include "text.h" // Para Text
#include "texture.h" // Para Texture
#include "utils.h"
#include "screen.h"
#include "resource.h"
// [SINGLETON]
Debug *Debug::debug_ = nullptr;
// [SINGLETON] Crearemos el objeto con esta función estática
void Debug::init()
{
Debug::debug_ = new Debug();
}
// [SINGLETON] Destruiremos el objeto con esta función estática
void Debug::destroy()
{
delete Debug::debug_;
}
// [SINGLETON] Con este método obtenemos el objeto y podemos trabajar con él
Debug *Debug::get()
{
return Debug::debug_;
}
// Constructor
Debug::Debug()
// Copia la dirección de los objetos
: screen_(Screen::get()),
renderer_(Screen::get()->getRenderer())
{
// Reserva memoria para los punteros
texture_ = Resource::get()->getTexture("debug.png");
text_ = Resource::get()->getText("debug.txt");
}
// Actualiza las variables
void Debug::update()
{
}
// Dibuja en pantalla
void Debug::render()
{
int y = y_;
int w = 0;
for (auto s : slot_)
{
text_->write(x_, y, s);
w = (std::max(w, (int)s.length()));
y += text_->getCharacterSize() + 1;
if (y > 192 - text_->getCharacterSize())
{
y = y_;
x_ += w * text_->getCharacterSize() + 2;
}
}
y = 0;
for (auto l : log_)
{
text_->writeColored(x_ + 10, y, l, Color(255, 255, 255));
y += text_->getCharacterSize() + 1;
}
}
// Establece la posición donde se colocará la información de debug
void Debug::setPos(SDL_Point p)
{
x_ = p.x;
y_ = p.y;
}