#pragma once #include "animated_sprite.h" #include enum class TabeDirection : int { TO_THE_LEFT = 0, TO_THE_RIGHT = 1, }; // Clase Tabe class Tabe { private: // Constantes static constexpr int WIDTH_ = 32; static constexpr int HEIGHT_ = 32; // Punteros std::unique_ptr sprite_; // Sprite con los graficos y animaciones // Variables float x_ = 0; // Posición del objeto float y_ = 0; // Posición del objeto float speed_ = 0.0f; // Velocidad de movimiento del objeto float accel_ = 0.0f; // Aceleración del objeto int fly_distance_ = 0; // Distancia de vuelo int waiting_counter_ = 0; // Tiempo que pasa quieto el objeto bool enabled_ = false; // Indica si el objeto está activo TabeDirection direction_; // Dirección del objeto TabeDirection destiny_; // Destino del objeto // Mueve el objeto void move(); // Actualiza la posición del sprite void shiftSprite() { sprite_->setPos(x_, y_); } // Establece un vuelo aleatorio void setRandomFlyPath(TabeDirection direction, int lenght); public: // Constructor Tabe(); // Destructor ~Tabe() = default; // Actualiza la lógica void update(); // Dibuja el objeto void render(); // Habilita el objeto void enable(); };