From 6082a72392978761aeae6091bff430bdca16acef Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Fri, 11 Jul 2025 23:34:52 +0200 Subject: [PATCH] canvi de pc before boromir --- source/player.cpp | 61 ++++++++++++++++++++++++++++------------------- source/player.h | 2 +- 2 files changed, 37 insertions(+), 26 deletions(-) diff --git a/source/player.cpp b/source/player.cpp index 1e50498..bf18567 100644 --- a/source/player.cpp +++ b/source/player.cpp @@ -372,25 +372,25 @@ void Player::setAnimation() if (firing_state_ == PlayerState::FIRING_NONE) { // No esta disparando - player_sprite_->setCurrentAnimation(WALK_ANIMATION); + player_sprite_->setCurrentAnimation(WALK_ANIMATION, false); player_sprite_->setFlip(FLIP_WALK); } else if (isRecoiling()) { // Retroceso - player_sprite_->setCurrentAnimation(WALK_ANIMATION + RECOIL_ANIMATION); + player_sprite_->setCurrentAnimation(WALK_ANIMATION + RECOIL_ANIMATION, false); player_sprite_->setFlip(FLIP_RECOIL); } else if (isCooling()) { // Acaba de disparar - player_sprite_->setCurrentAnimation(WALK_ANIMATION + COOL_ANIMATION); + player_sprite_->setCurrentAnimation(WALK_ANIMATION + COOL_ANIMATION, false); player_sprite_->setFlip(FLIP_COOL); } else { // Está disparando - player_sprite_->setCurrentAnimation(WALK_ANIMATION + FIRE_ANIMATION); + player_sprite_->setCurrentAnimation(WALK_ANIMATION + FIRE_ANIMATION, false); // Si dispara de lado, invierte el sprite segun hacia donde dispara // Si dispara recto, invierte el sprite segun hacia donde camina player_sprite_->setFlip(FIRE_ANIMATION == "-fire-center" ? FLIP_WALK : FLIP_FIRE); @@ -454,36 +454,47 @@ void Player::updateCooldown() } --cant_fire_counter_; + if (cant_fire_counter_ == 0) + { + recoiling_state_counter_ = recoiling_state_duration_; + } } else { - if (cooling_state_counter_ > COOLING_COMPLETE_) + if (recoiling_state_counter_ > 0) { - if (cooling_state_counter_ == COOLING_DURATION_) + --recoiling_state_counter_; + } + else + { + if (cooling_state_counter_ > COOLING_COMPLETE_) { - switch (firing_state_) + if (cooling_state_counter_ == COOLING_DURATION_) { - case PlayerState::RECOILING_LEFT: - setFiringState(PlayerState::COOLING_LEFT); - break; - case PlayerState::RECOILING_RIGHT: - setFiringState(PlayerState::COOLING_RIGHT); - break; - case PlayerState::RECOILING_UP: - setFiringState(PlayerState::COOLING_UP); - break; - default: - break; + switch (firing_state_) + { + case PlayerState::RECOILING_LEFT: + setFiringState(PlayerState::COOLING_LEFT); + break; + case PlayerState::RECOILING_RIGHT: + setFiringState(PlayerState::COOLING_RIGHT); + break; + case PlayerState::RECOILING_UP: + setFiringState(PlayerState::COOLING_UP); + break; + default: + break; + } } + + --cooling_state_counter_; } - --cooling_state_counter_; - } - - if (cooling_state_counter_ == COOLING_COMPLETE_) - { - setFiringState(PlayerState::FIRING_NONE); - cooling_state_counter_ = -1; + if (cooling_state_counter_ == COOLING_COMPLETE_) + { + setFiringState(PlayerState::FIRING_NONE); + cooling_state_counter_ = -1; + } } } } diff --git a/source/player.h b/source/player.h index 9fed7b1..9ea852f 100644 --- a/source/player.h +++ b/source/player.h @@ -162,7 +162,7 @@ private: static constexpr int WIDTH_ = 30; // Anchura static constexpr int HEIGHT_ = 30; // Altura static constexpr float BASE_SPEED_ = 1.5f; // Velocidad base del jugador - static constexpr int COOLING_DURATION_ = 30; + static constexpr int COOLING_DURATION_ = 50; static constexpr int COOLING_COMPLETE_ = 0; // --- Objetos y punteros ---