Files
coffee_crisis/source/writer.cpp
Sergio Valor 788aec0dab Pasaeta de include-what-you-use
Afegit fitxer CMakeLists.txt
2025-02-21 12:02:39 +01:00

138 lines
2.0 KiB
C++

#include "writer.h"
#include "text.h" // for Text
// Constructor
Writer::Writer(Text *text)
{
// Copia los punteros
this->text = text;
// Inicializa variables
posX = 0;
posY = 0;
kerning = 0;
caption = "";
speed = 0;
writingCounter = 0;
index = 0;
lenght = 0;
completed = false;
enabled = false;
enabledCounter = 0;
finished = false;
}
// Actualiza el objeto
void Writer::update()
{
if (enabled)
{
if (!completed)
{ // No completado
if (writingCounter > 0)
{
writingCounter--;
}
else if (writingCounter == 0)
{
index++;
writingCounter = speed;
}
if (index == lenght)
{
completed = true;
}
}
if (completed)
{ // Completado
if (enabledCounter > 0)
{
enabledCounter--;
}
else if (enabledCounter == 0)
{
finished = true;
}
}
}
}
// Dibuja el objeto en pantalla
void Writer::render()
{
if (enabled)
{
text->write(posX, posY, caption, kerning, index);
}
}
// Establece el valor de la variable
void Writer::setPosX(int value)
{
posX = value;
}
// Establece el valor de la variable
void Writer::setPosY(int value)
{
posY = value;
}
// Establece el valor de la variable
void Writer::setKerning(int value)
{
kerning = value;
}
// Establece el valor de la variable
void Writer::setCaption(std::string text)
{
caption = text;
lenght = text.length();
}
// Establece el valor de la variable
void Writer::setSpeed(int value)
{
speed = value;
writingCounter = value;
}
// Establece el valor de la variable
void Writer::setEnabled(bool value)
{
enabled = value;
}
// Obtiene el valor de la variable
bool Writer::IsEnabled()
{
return enabled;
}
// Establece el valor de la variable
void Writer::setEnabledCounter(int time)
{
enabledCounter = time;
}
// Obtiene el valor de la variable
int Writer::getEnabledCounter()
{
return enabledCounter;
}
// Centra la cadena de texto a un punto X
void Writer::center(int x)
{
setPosX(x - (text->lenght(caption, kerning) / 2));
}
// Obtiene el valor de la variable
bool Writer::hasFinished()
{
return finished;
}