#pragma once #include // for SDL_FRect #include // for shared_ptr, unique_ptr import vibe2.core; // for Color y constantes #include "external/sprite.h" // for Sprite class Texture; class Ball { private: std::unique_ptr sprite_; // Sprite para pintar la clase SDL_FRect pos_; // Posición y tamaño de la pelota float vx_, vy_; // Velocidad float gravity_force_; // Gravedad vibe2::Color color_; // Color de la pelota bool on_floor_; // Indica si la pelota está ya en el suelo bool stopped_; // Indica si la pelota ha terminado de moverse; float loss_; // Coeficiente de rebote. Pérdida de energía en cada rebote public: // Constructor Ball(float x, float vx, float vy, vibe2::Color color, std::shared_ptr texture); // Destructor ~Ball() = default; // Actualiza la lógica de la clase void update(float deltaTime); // Pinta la clase void render(); // Modifica la velocidad void modVel(float vx, float vy); // Cambia la gravedad void switchGravity(); // Getters para debug float getVelocityY() const { return vy_; } float getGravityForce() const { return gravity_force_; } bool isOnFloor() const { return on_floor_; } // Getters para batch rendering SDL_FRect getPosition() const { return pos_; } vibe2::Color getColor() const { return color_; } };