Files
coffee_crisis/source/writer.cpp
2022-09-27 22:39:27 +02:00

151 lines
2.1 KiB
C++

#include "const.h"
#include "writer.h"
// Constructor
Writer::Writer(Text *text)
{
// Copia los punteros
mText = text;
// Inicializa variables
mPosX = 0;
mPosY = 0;
mKerning = 0;
mCaption = "";
mSpeed = 0;
mTimer = 0;
mIndex = 0;
mLenght = 0;
mCompleted = false;
mEnabled = false;
mEnabledTimer = 0;
mId = 0;
finished = false;
}
// Destructor
Writer::~Writer()
{
}
// Actualiza el objeto
void Writer::update()
{
if (mEnabled)
{
if (!mCompleted)
{ // No completado
if (mTimer > 0)
{
mTimer--;
}
else if (mTimer == 0)
{
mIndex++;
mTimer = mSpeed;
}
if (mIndex == mLenght)
{
mCompleted = true;
}
}
if (mCompleted)
{ // Completado
if (mEnabledTimer > 0)
{
mEnabledTimer--;
}
else if (mEnabledTimer == 0)
{
mEnabled = false;
finished = true;
}
}
}
}
// Dibuja el objeto en pantalla
void Writer::render()
{
if (mEnabled)
{
mText->write(mPosX, mPosY, mCaption, mKerning, mIndex);
}
}
// Establece el valor de la variable
void Writer::setPosX(int value)
{
mPosX = value;
}
// Establece el valor de la variable
void Writer::setPosY(int value)
{
mPosY = value;
}
// Establece el valor de la variable
void Writer::setKerning(int value)
{
mKerning = value;
}
// Establece el valor de la variable
void Writer::setCaption(std::string text)
{
mCaption = text;
mLenght = text.length();
}
// Establece el valor de la variable
void Writer::setSpeed(int value)
{
mSpeed = value;
mTimer = value;
}
// Establece el valor de la variable
void Writer::setEnabled(bool value)
{
mEnabled = value;
}
// Obtiene el valor de la variable
bool Writer::IsEnabled()
{
return mEnabled;
}
// Establece el valor de la variable
void Writer::setEnabledTimer(int value)
{
mEnabledTimer = value;
}
// Obtiene el valor de la variable
int Writer::getEnabledTimer()
{
return mEnabledTimer;
}
// Centra la cadena de texto a un punto X
void Writer::center(int x)
{
setPosX(x - (mText->lenght(mCaption, mKerning) / 2));
}
// Establece el valor de la variable
void Writer::setId(int id)
{
mId = id;
}
// Obtiene el valor de la variable
bool Writer::hasFinished()
{
return finished;
}