updated smartsprite.cpp

This commit is contained in:
2021-02-18 21:26:59 +01:00
parent c3e545d156
commit 6ab8f39b92
2 changed files with 41 additions and 52 deletions

View File

@@ -4,6 +4,7 @@
// Constructor
SmartSprite::SmartSprite()
{
AnimatedSprite::init(nullptr, nullptr);
init(nullptr, nullptr);
}
@@ -32,7 +33,7 @@ void SmartSprite::init(LTexture *texture, SDL_Renderer *renderer)
setSpriteClip(0, 0, 0, 0);
setEnabled(false);
setEnabledTimer(0);
setCounter(0);
mIsOnDestination = false;
mDestX = 0;
@@ -40,12 +41,10 @@ void SmartSprite::init(LTexture *texture, SDL_Renderer *renderer)
// El Id siempre es >=0, por lo tanto si no se le asigna Id se queda en negativo
mId = -1;
mIntroEvents = nullptr;
}
// Pone a cero los elementos del objeto
void SmartSprite::erase()
void SmartSprite::reset()
{
init(nullptr, nullptr);
}
@@ -62,16 +61,22 @@ void SmartSprite::setEnabled(bool state)
mEnabled = state;
}
// Obtiene el valor de la variable
Uint16 SmartSprite::getEnabledTimer()
// Obtiene el valor del contador
Uint16 SmartSprite::getCounter()
{
return mEnabledTimer;
return mCounter;
}
// Establece el valor de la variable
void SmartSprite::setEnabledTimer(Uint16 time)
// Establece el valor del contador
void SmartSprite::setCounter(Uint16 time)
{
mEnabledTimer = time;
mCounter = time;
}
// Establece el valor del contador
void SmartSprite::resetCounter(Uint16 time)
{
mCounter = mCounterIni;
}
// Establece el valor de la variable
@@ -103,7 +108,8 @@ bool SmartSprite::update()
{
if (mEnabled)
{
move();
// Actualiza las variables de posición, velocidad y animación
AnimatedSprite::update();
// Comprueba si se desplaza en el eje X hacia la derecha
if ((getAccelX() > 0) || ((getAccelX() == 0) && (getVelX() > 0)))
@@ -178,12 +184,12 @@ bool SmartSprite::update()
if (mIsOnDestination)
{
// Si el contador es mayor que cero, lo decrementa
if (mEnabledTimer > 0)
if (mCounter > 0)
{
--mEnabledTimer;
mCounter--;
}
// Si ha llegado a cero, deshabilita el objeto o manda el aviso en función de si tiene Id
else if (mEnabledTimer == 0)
else if (mCounter == 0)
{
if (mId < 0)
{
@@ -191,7 +197,7 @@ bool SmartSprite::update()
}
else
{
mIntroEvents[mId] = EVENT_COMPLETED;
//return true;;
}
}
}
@@ -219,10 +225,4 @@ void SmartSprite::render()
void SmartSprite::setId(int id)
{
mId = id;
}
// Establece el valor de la variable
void SmartSprite::setIntroEvents(Uint8 *value)
{
mIntroEvents = value;
}

View File

@@ -19,7 +19,7 @@ public:
void init(LTexture *texture, SDL_Renderer *renderer);
// Pone a cero los elementos del objeto
void erase();
void reset();
// Obtiene el valor de la variable
bool isEnabled();
@@ -27,11 +27,14 @@ public:
// Establece el valor de la variable
void setEnabled(bool state);
// Obtiene el valor de la variable
Uint16 getEnabledTimer();
// Obtiene el valor del contador
Uint16 getCounter();
// Establece el valor de la variable
void setEnabledTimer(Uint16 time);
// Establece el valor del contador
void setCounter(Uint16 time);
// Inicializa el valor del contador
void resetCounter(Uint16 time);
// Establece el valor de la variable
void setDestX(int value);
@@ -45,40 +48,26 @@ public:
// Obtiene el valor de la variable
int getDestY();
// Actualiza la posición y comprueba si ha llegado a su destino
bool update();
// Obtiene el valor de la variable
bool isOnDestination();
// Pinta el objeto en pantalla
void render();
// Establece el valor de la variable
void setId(int id);
// Establece el valor de la variable
void setIntroEvents(Uint8 *value);
// Actualiza la posición y comprueba si ha llegado a su destino
bool update();
// Pinta el objeto en pantalla
void render();
private:
// Indica si esta habilitado
bool mEnabled;
// Contador
Uint16 mEnabledTimer;
// Indica si está en el destino
bool mIsOnDestination;
// Posicion de destino
int mDestX;
int mDestY;
// Identificador
int mId;
// Dirección del array de eventos donde notificar el estado
Uint8 *mIntroEvents;
bool mEnabled; // Indica si esta habilitado
bool mIsOnDestination; // Indica si está en el destino
int mDestX; // Posicion de destino en el eje X
int mDestY; // Posicion de destino en el eje Y
int mId; // Identificador
Uint16 mCounter; // Contador
Uint16 mCounterIni; // Valor inicial del contador
};
#endif