#pragma once #include #include "core/rendering/animatedsprite.h" // for AnimatedSprite class Texture; // Clase SmartSprite class SmartSprite : public AnimatedSprite { public: SmartSprite(Texture *texture, SDL_Renderer *renderer); // Constructor void init(); // Inicializa el objeto void update() override; // Actualiza la posición y comprueba si ha llegado a su destino void render() override; // Pinta el objeto en pantalla [[nodiscard]] auto getEnabledCounter() const -> int; // Obtiene 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); // Establece 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; // Obtiene el valor de la variable private: // Variables bool on_destination_; // Indica si está en el destino int dest_x_; // Posicion de destino en el eje X int dest_y_; // Posicion de destino en el eje Y int enabled_counter_; // Contador para deshabilitarlo bool finished_; // Indica si ya ha terminado void checkMove(); // Comprueba el movimiento void checkFinished(); // Comprueba si ha terminado };