time-based: Player::setAnimation(dt_s) propaga dt_s als animate() dels sprites (corregeix animacio del jugador a 144Hz)
This commit is contained in:
@@ -280,6 +280,44 @@ void Player::setAnimation() {
|
|||||||
fire_sprite_->setFlip(FLIP_WALK);
|
fire_sprite_->setFlip(FLIP_WALK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Establece la animación correspondiente al estado (time-based)
|
||||||
|
void Player::setAnimation(float dt_s) {
|
||||||
|
std::string body_coffees;
|
||||||
|
std::string head_coffees;
|
||||||
|
if (coffees_ > 0) {
|
||||||
|
body_coffees = coffees_ == 1 ? "_1C" : "_2C";
|
||||||
|
head_coffees = "_1C";
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::string POWER_UP = power_up_ ? "_pwr" : "";
|
||||||
|
const std::string WALKING = status_walking_ == STATUS_WALKING_STOP ? "stand" : "walk";
|
||||||
|
const std::string FIRING = status_firing_ == STATUS_FIRING_UP ? "centershoot" : "sideshoot";
|
||||||
|
|
||||||
|
const SDL_FlipMode FLIP_WALK = status_walking_ == STATUS_WALKING_RIGHT ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE;
|
||||||
|
const SDL_FlipMode FLIP_FIRE = status_firing_ == STATUS_FIRING_RIGHT ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE;
|
||||||
|
|
||||||
|
legs_sprite_->setCurrentAnimation(WALKING);
|
||||||
|
legs_sprite_->setFlip(FLIP_WALK);
|
||||||
|
if (status_firing_ == STATUS_FIRING_NO) {
|
||||||
|
body_sprite_->setCurrentAnimation(WALKING + body_coffees + POWER_UP);
|
||||||
|
body_sprite_->setFlip(FLIP_WALK);
|
||||||
|
head_sprite_->setCurrentAnimation(WALKING + head_coffees + POWER_UP);
|
||||||
|
head_sprite_->setFlip(FLIP_WALK);
|
||||||
|
} else {
|
||||||
|
body_sprite_->setCurrentAnimation(FIRING + body_coffees + POWER_UP);
|
||||||
|
body_sprite_->setFlip(FLIP_FIRE);
|
||||||
|
head_sprite_->setCurrentAnimation(FIRING + head_coffees + POWER_UP);
|
||||||
|
head_sprite_->setFlip(FLIP_FIRE);
|
||||||
|
}
|
||||||
|
|
||||||
|
legs_sprite_->animate(dt_s);
|
||||||
|
body_sprite_->animate(dt_s);
|
||||||
|
head_sprite_->animate(dt_s);
|
||||||
|
|
||||||
|
fire_sprite_->animate(dt_s);
|
||||||
|
fire_sprite_->setFlip(FLIP_WALK);
|
||||||
|
}
|
||||||
|
|
||||||
// Obtiene el valor de la variable
|
// Obtiene el valor de la variable
|
||||||
auto Player::getPosX() const -> int {
|
auto Player::getPosX() const -> int {
|
||||||
return int(pos_x_);
|
return int(pos_x_);
|
||||||
@@ -357,7 +395,7 @@ void Player::update() {
|
|||||||
// Actualiza al jugador (time-based)
|
// Actualiza al jugador (time-based)
|
||||||
void Player::update(float dt_s) {
|
void Player::update(float dt_s) {
|
||||||
move(dt_s);
|
move(dt_s);
|
||||||
setAnimation();
|
setAnimation(dt_s);
|
||||||
shiftColliders();
|
shiftColliders();
|
||||||
updateCooldown(dt_s);
|
updateCooldown(dt_s);
|
||||||
updatePowerUpCounter(dt_s);
|
updatePowerUpCounter(dt_s);
|
||||||
|
|||||||
@@ -30,7 +30,8 @@ class Player {
|
|||||||
|
|
||||||
void setPlayerTextures(const std::vector<Texture *> &texture); // Pone las texturas del jugador
|
void setPlayerTextures(const std::vector<Texture *> &texture); // Pone las texturas del jugador
|
||||||
void setInput(Input::Action input); // Actua en consecuencia de la entrada recibida
|
void setInput(Input::Action input); // Actua en consecuencia de la entrada recibida
|
||||||
void setAnimation(); // Establece la animación correspondiente al estado
|
void setAnimation(); // Establece la animación correspondiente al estado (frame-based)
|
||||||
|
void setAnimation(float dt_s); // Establece la animación correspondiente al estado (time-based)
|
||||||
|
|
||||||
[[nodiscard]] auto getPosX() const -> int; // Obtiene el valor de la variable
|
[[nodiscard]] auto getPosX() const -> int; // Obtiene el valor de la variable
|
||||||
[[nodiscard]] auto getPosY() const -> int; // Obtiene el valor de la variable
|
[[nodiscard]] auto getPosY() const -> int; // Obtiene el valor de la variable
|
||||||
|
|||||||
Reference in New Issue
Block a user