forked from jaildesigner-jailgames/jaildoctors_dilemma
159 lines
2.2 KiB
C++
159 lines
2.2 KiB
C++
#include "const.h"
|
|
#include "writer.h"
|
|
|
|
// Constructor
|
|
Writer::Writer(Text *text)
|
|
{
|
|
mText = text;
|
|
init();
|
|
}
|
|
|
|
// Destructor
|
|
Writer::~Writer()
|
|
{
|
|
mText = nullptr;
|
|
}
|
|
|
|
// Inicializador
|
|
void Writer::init()
|
|
{
|
|
mPosX = 0;
|
|
mPosY = 0;
|
|
mKerning = 0;
|
|
mCaption = "";
|
|
mSpeed = 0;
|
|
mTimer = 0;
|
|
mIndex = 0;
|
|
mLenght = 0;
|
|
mCompleted = false;
|
|
mEnabled = false;
|
|
mEnabledTimer = 0;
|
|
mId = -1;
|
|
mIntroEvents = nullptr;
|
|
}
|
|
|
|
// 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(Uint16 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(Uint16 value)
|
|
{
|
|
mEnabledTimer = value;
|
|
}
|
|
|
|
// Obtiene el valor de la variable
|
|
Uint16 Writer::getEnabledTimer()
|
|
{
|
|
return mEnabledTimer;
|
|
}
|
|
|
|
// Actualiza el objeto
|
|
void Writer::update()
|
|
{
|
|
if (mEnabled)
|
|
{
|
|
if (mCompleted == false)
|
|
{
|
|
if (mTimer > 0)
|
|
{
|
|
mTimer--;
|
|
}
|
|
if (mTimer == 0)
|
|
{
|
|
mIndex++;
|
|
mTimer = mSpeed;
|
|
}
|
|
if (mIndex == mLenght)
|
|
{
|
|
mCompleted = true;
|
|
}
|
|
}
|
|
if (mCompleted)
|
|
{
|
|
if (mEnabledTimer > 0)
|
|
{
|
|
mEnabledTimer--;
|
|
}
|
|
else if (mEnabledTimer == 0)
|
|
{
|
|
if (mId < 0)
|
|
{
|
|
mEnabled = false;
|
|
}
|
|
else
|
|
{
|
|
mIntroEvents[mId] = EVENT_COMPLETED;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Dibuja el objeto en pantalla
|
|
void Writer::render()
|
|
{
|
|
if (mEnabled)
|
|
{
|
|
mText->write(mPosX, mPosY, mCaption, mKerning, mIndex);
|
|
}
|
|
}
|
|
|
|
// 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;
|
|
}
|
|
|
|
// Establece el valor de la variable
|
|
void Writer::setIntroEvents(Uint8 *value)
|
|
{
|
|
mIntroEvents = value;
|
|
}
|