diff --git a/source/smartsprite.cpp b/source/smartsprite.cpp index 5b68a17..b89af40 100644 --- a/source/smartsprite.cpp +++ b/source/smartsprite.cpp @@ -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; } \ No newline at end of file diff --git a/source/smartsprite.h b/source/smartsprite.h index 8061960..a7b6251 100644 --- a/source/smartsprite.h +++ b/source/smartsprite.h @@ -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