time-based: Balloon amb dual-API update/move/state/animation/bounce(dt_s), vels/gravetat en px/s i px/s2
This commit is contained in:
@@ -66,12 +66,14 @@ class Balloon {
|
||||
Balloon(const Balloon &) = delete;
|
||||
auto operator=(const Balloon &) -> Balloon & = delete;
|
||||
|
||||
void allignTo(int x); // Centra el globo en la posición X
|
||||
void render(); // Pinta el globo en la pantalla
|
||||
void move(); // Actualiza la posición y estados del globo
|
||||
void disable(); // Deshabilita el globo y pone a cero todos los valores
|
||||
void pop(); // Explosiona el globo
|
||||
void update(); // Actualiza al globo a su posicion, animación y controla los contadores
|
||||
void allignTo(int x); // Centra el globo en la posición X
|
||||
void render(); // Pinta el globo en la pantalla
|
||||
void move(); // Actualiza la posición y estados del globo (frame-based)
|
||||
void move(float dt_s); // Actualiza la posición y estados del globo (time-based)
|
||||
void disable(); // Deshabilita el globo y pone a cero todos los valores
|
||||
void pop(); // Explosiona el globo
|
||||
void update(); // Actualiza al globo (frame-based)
|
||||
void update(float dt_s); // Actualiza al globo (time-based)
|
||||
|
||||
[[nodiscard]] auto isEnabled() const -> bool; // Comprueba si el globo está habilitado
|
||||
[[nodiscard]] auto isStopped() const -> bool; // Obtiene del valor de la variable
|
||||
@@ -109,6 +111,11 @@ class Balloon {
|
||||
// Cantidad de elementos del vector con los valores de la deformación del globo al rebotar
|
||||
static constexpr int MAX_BOUNCE = 10;
|
||||
|
||||
// Time-based: la creació "desplaça" el globus cada 10 frames a 60Hz ⇒ 1/6 s.
|
||||
static constexpr float CREATION_STEP_S = 10.0F / 60.0F;
|
||||
// Time-based: el bounce avança w/h cada `speed_` frames a 60Hz; mantenim el mateix temps per pas.
|
||||
static constexpr float BOUNCE_STEP_S = 1.0F / 60.0F; // 1 frame
|
||||
|
||||
// Estructura para las variables para el efecto de los rebotes
|
||||
struct Bouncing {
|
||||
bool enabled; // Si el efecto está activo
|
||||
@@ -126,47 +133,62 @@ class Balloon {
|
||||
AnimatedSprite *sprite_; // Sprite del objeto globo
|
||||
|
||||
// Variables
|
||||
float pos_x_; // Posición en el eje X
|
||||
float pos_y_; // Posición en el eje Y
|
||||
Uint8 width_; // Ancho
|
||||
Uint8 height_; // Alto
|
||||
float vel_x_; // Velocidad en el eje X. Cantidad de pixeles a desplazarse
|
||||
float vel_y_; // Velocidad en el eje Y. Cantidad de pixeles a desplazarse
|
||||
float gravity_; // Aceleración en el eje Y. Modifica la velocidad
|
||||
float default_vel_y_; // Velocidad inicial que tienen al rebotar contra el suelo
|
||||
float max_vel_y_; // Máxima velocidad que puede alcanzar el objeto en el eje Y
|
||||
bool being_created_; // Indica si el globo se está creando
|
||||
bool blinking_; // Indica si el globo está intermitente
|
||||
bool enabled_; // Indica si el globo esta activo
|
||||
bool invulnerable_; // Indica si el globo es invulnerable
|
||||
bool popping_; // Indica si el globo está explotando
|
||||
bool stopped_; // Indica si el globo está parado
|
||||
bool visible_; // Indica si el globo es visible
|
||||
Circle collider_; // Circulo de colisión del objeto
|
||||
Uint16 creation_counter_; // Temporizador para controlar el estado "creandose"
|
||||
Uint16 creation_counter_ini_; // Valor inicial para el temporizador para controlar el estado "creandose"
|
||||
Uint16 score_; // Puntos que da el globo al ser destruido
|
||||
Uint16 stopped_counter_; // Contador para controlar el estado "parado"
|
||||
Uint8 kind_; // Tipo de globo
|
||||
Uint8 menace_; // Cantidad de amenaza que genera el globo
|
||||
Uint32 counter_; // Contador interno
|
||||
float travel_y_; // Distancia que ha de recorrer el globo en el eje Y antes de que se le aplique la gravedad
|
||||
float speed_; // Velocidad a la que se mueven los globos
|
||||
Uint8 size_; // Tamaño del globo
|
||||
Uint8 power_; // Cantidad de poder que alberga el globo
|
||||
Bouncing bouncing_; // Contiene las variables para el efecto de rebote
|
||||
float pos_x_; // Posición en el eje X
|
||||
float pos_y_; // Posición en el eje Y
|
||||
Uint8 width_; // Ancho
|
||||
Uint8 height_; // Alto
|
||||
float vel_x_; // Velocidad en X (frame-based: px/frame)
|
||||
float vel_y_; // Velocidad en Y (frame-based: px/frame)
|
||||
float gravity_; // Aceleración Y (frame-based: px/frame²)
|
||||
float default_vel_y_; // Velocitat inicial al rebotar contra el terra (frame-based)
|
||||
float max_vel_y_; // Velocitat màxima en Y (frame-based)
|
||||
float vel_x_s_{0.0F}; // Velocidad en X (time-based: px/s)
|
||||
float vel_y_s_{0.0F}; // Velocidad en Y (time-based: px/s)
|
||||
float gravity_s_{0.0F}; // Aceleración Y (time-based: px/s²)
|
||||
float default_vel_y_s_{0.0F}; // Velocitat inicial al rebotar (time-based)
|
||||
float max_vel_y_s_{0.0F}; // Velocitat màxima en Y (time-based)
|
||||
bool being_created_; // Indica si el globo se está creando
|
||||
bool blinking_; // Indica si el globo está intermitente
|
||||
bool enabled_; // Indica si el globo esta activo
|
||||
bool invulnerable_; // Indica si el globo es invulnerable
|
||||
bool popping_; // Indica si el globo está explotando
|
||||
bool stopped_; // Indica si el globo está parado
|
||||
bool visible_; // Indica si el globo es visible
|
||||
Circle collider_; // Circulo de colisión del objeto
|
||||
Uint16 creation_counter_; // Temporizador (frame-based)
|
||||
Uint16 creation_counter_ini_; // Valor inicial del temporizador (frames)
|
||||
float creation_counter_s_{0.0F}; // Temporizador (time-based)
|
||||
float creation_counter_ini_s_{0.0F}; // Valor inicial del temporizador (segons)
|
||||
float creation_phase_s_{0.0F}; // Acumulador de fase per als steps de creació (time-based)
|
||||
Uint16 score_; // Puntos que da el globo al ser destruido
|
||||
Uint16 stopped_counter_; // Contador (frame-based)
|
||||
float stopped_counter_s_{0.0F}; // Contador (time-based)
|
||||
Uint8 kind_; // Tipo de globo
|
||||
Uint8 menace_; // Cantidad de amenaza que genera el globo
|
||||
Uint32 counter_; // Contador interno (legacy, no usat per cap lector)
|
||||
float travel_y_; // Acumulador per a aplicar la gravetat (frame-based)
|
||||
float speed_; // Tempo del joc (multiplicador adimensional, frame i time-based)
|
||||
Uint8 size_; // Tamaño del globo
|
||||
Uint8 power_; // Cantidad de poder que alberga el globo
|
||||
Bouncing bouncing_; // Contiene las variables para el efecto de rebote
|
||||
float bounce_phase_s_{0.0F}; // Fase del bounce (time-based)
|
||||
|
||||
void updateColliders(); // Alinea el circulo de colisión con la posición del objeto globo
|
||||
void bounceStart(); // Activa el efecto
|
||||
void bounceStop(); // Detiene el efecto
|
||||
void updateBounce(); // Aplica el efecto
|
||||
void updateAnimation(); // Establece la animación correspondiente
|
||||
void updateBounce(); // Aplica el efecto (frame-based)
|
||||
void updateBounce(float dt_s); // Aplica el efecto (time-based)
|
||||
void updateAnimation(); // Establece la animación correspondiente (frame-based)
|
||||
void updateAnimation(float dt_s); // Establece la animación correspondiente (time-based)
|
||||
void setBeingCreated(bool value); // Establece el valor de la variable
|
||||
|
||||
void updateState(); // Actualiza los estados del globo
|
||||
void updateState(); // Actualiza los estados del globo (frame-based)
|
||||
void updateState(float dt_s); // Actualiza los estados del globo (time-based)
|
||||
|
||||
// Helpers de updateState, uno por cada rama de estado
|
||||
void updateStatePopping();
|
||||
void updateStateBeingCreated();
|
||||
void updateStateBeingCreated(float dt_s);
|
||||
void updateStateStopped();
|
||||
void updateStateStopped(float dt_s);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user