#pragma once #include #include "core/rendering/animatedsprite.h" // for AnimatedSprite class Texture; // Clase SmartSprite class SmartSprite : public AnimatedSprite { private: // Variables bool onDestination; // Indica si está en el destino int destX; // Posicion de destino en el eje X int destY; // Posicion de destino en el eje Y int enabledCounter; // Contador para deshabilitarlo bool finished; // Indica si ya ha terminado // Comprueba el movimiento void checkMove(); // Comprueba si ha terminado void checkFinished(); public: // Constructor SmartSprite(Texture *texture, SDL_Renderer *renderer); // Inicializa el objeto void init(); // Actualiza la posición y comprueba si ha llegado a su destino void update() override; // Pinta el objeto en pantalla void render() override; // Obtiene el valor de la variable [[nodiscard]] auto getEnabledCounter() const -> int; // Establece el valor de la variable void setEnabledCounter(int value); // Establece el valor de la variable void setDestX(int x); // Establece el valor de la variable void setDestY(int y); // Obtiene el valor de la variable [[nodiscard]] auto getDestX() const -> int; // Obtiene el valor de la variable [[nodiscard]] auto getDestY() const -> int; // Obtiene el valor de la variable [[nodiscard]] auto isOnDestination() const -> bool; // Obtiene el valor de la variable [[nodiscard]] auto hasFinished() const -> bool; };