diff --git a/source/game/entities/player.cpp b/source/game/entities/player.cpp index e6992b1..e13bcb1 100644 --- a/source/game/entities/player.cpp +++ b/source/game/entities/player.cpp @@ -17,7 +17,6 @@ // Constructor Player::Player(const Data& player) : room_(player.room) { - // Inicializa algunas variables initSprite(player.animations_path); setColor(); applySpawnValues(player.spawn_data); @@ -35,21 +34,11 @@ void Player::render() { // Actualiza las variables del objeto void Player::update(float delta_time) { if (!is_paused_) { - /* - handleInput(); // Comprueba las entradas y modifica variables - move(delta_time); // Recalcula la posición del jugador - animate(delta_time); // Establece la animación del jugador - handleBorders(); // Comprueba si está situado en alguno de los cuatro bordes de la habitación - handleJumpEnd(); // Comprueba si ha finalizado el salto al alcanzar la altura de inicio - handleKillingTiles(); // Comprueba que el jugador no toque ningun tile de los que matan - setColor(); // Establece el color del jugador - */ handleInput(); updateState(); move(delta_time); animate(delta_time); handleBorders(); - setColor(); } } @@ -131,12 +120,10 @@ void Player::transitionToState(State state) { switch (state) { case State::STANDING: - std::cout << "STANDING\n"; vy_ = 0; handleDeathByFalling(); break; case State::JUMPING: - std::cout << "JUMPING\n"; if (previous_state_ == State::STANDING) { vy_ = -MAX_VY; last_grounded_position_ = y_; @@ -144,7 +131,6 @@ void Player::transitionToState(State state) { } break; case State::FALLING: - std::cout << "FALLING\n"; last_grounded_position_ = y_; vy_ = MAX_VY; vx_ = 0.0F; @@ -407,8 +393,8 @@ void Player::moveVerticalDown(float delta_time) { if (state_ == State::FALLING || (state_ == State::JUMPING && vx_ == 0.0F)) { // No está saltando O salta recto: se pega a las rampas auto rect = toSDLRect(proj); - const LineVertical LEFT_SIDE = {.x = rect.x, .y1 = rect.y, .y2 = rect.y + rect.h - 1}; - const LineVertical RIGHT_SIDE = {.x = rect.x + rect.w - 1, .y1 = rect.y, .y2 = rect.y + rect.h - 1}; + const LineVertical LEFT_SIDE = {.x = rect.x, .y1 = rect.y, .y2 = rect.y + rect.h}; + const LineVertical RIGHT_SIDE = {.x = rect.x + rect.w - 1, .y1 = rect.y, .y2 = rect.y + rect.h}; const float POINT = std::max(room_->checkRightSlopes(&RIGHT_SIDE), room_->checkLeftSlopes(&LEFT_SIDE)); if (POINT > -1) { // No está saltando y hay colisión con una rampa @@ -436,44 +422,6 @@ void Player::moveVerticalDown(float delta_time) { } } -// Orquesta el movimiento del jugador -/* -void Player::move(float delta_time) { - applyGravity(delta_time); // Aplica gravedad al jugador - handleState(delta_time); // Comprueba el estado del jugador - - // Movimiento horizontal - if (vx_ < 0.0F) { - moveHorizontal(delta_time, -1); // Izquierda - } else if (vx_ > 0.0F) { - moveHorizontal(delta_time, 1); // Derecha - } - - // Si ha salido del suelo, el jugador cae - if (state_ == State::STANDING && !isOnFloor()) { - transitionToState(State::FALLING); - auto_movement_ = false; - } - - // Si ha salido de una superficie automatica, detiene el movimiento automatico - if (state_ == State::STANDING && isOnFloor() && !isOnAutoSurface()) { - auto_movement_ = false; - } - - // Movimiento vertical - if (vy_ < 0.0F) { - moveVerticalUp(delta_time); - } else if (vy_ > 0.0F) { - moveVerticalDown(delta_time); - } - - y_prev_ = y_; // Guarda Y DESPUÉS de todo el movimiento (para detectar hitos en sonidos) - - // Actualiza la geometría del collider y sprite - updateColliderGeometry(); -} -*/ - // Establece la animación del jugador void Player::animate(float delta_time) { if (vx_ != 0) { @@ -590,7 +538,6 @@ auto Player::handleKillingTiles() -> bool { // Establece el color del jugador void Player::setColor() { - /* if (Options::cheats.invincible == Options::Cheat::State::ENABLED) { color_ = static_cast(PaletteColor::CYAN); } else if (Options::cheats.infinite_lives == Options::Cheat::State::ENABLED) { @@ -598,24 +545,6 @@ void Player::setColor() { } else { color_ = static_cast(PaletteColor::WHITE); } - */ - - switch (state_) { - case State::STANDING: - color_ = static_cast(PaletteColor::YELLOW); - break; - - case State::JUMPING: - color_ = static_cast(PaletteColor::GREEN); - break; - - case State::FALLING: - color_ = static_cast(PaletteColor::RED); - break; - - default: - break; - } } // Actualiza los puntos de colisión @@ -642,36 +571,6 @@ void Player::updateFeet() { feet_[1] = {.x = P.x + 7, .y = P.y + HEIGHT - 1}; } -// Cambia el estado del jugador -/* -void Player::transitionToState(State value) { - previous_state_ = state_; - state_ = value; - - // Establecer velocidades INMEDIATAMENTE al cambiar de estado - switch (state_) { - case State::STANDING: - vx_ = 0.0F; - vy_ = 0.0F; - break; - - case State::JUMPING: - // vx_ mantiene su valor actual (heredado de STANDING) - vy_ = JUMP_VELOCITY; - break; - - case State::FALLING: - vx_ = 0.0F; // CRÍTICO para pegarse a rampas - vy_ = MAX_VY; - auto_movement_ = false; - break; - - default: - break; - } -} -*/ - // Inicializa los sonidos de salto y caida void Player::initSounds() { jumping_sound_.clear(); @@ -702,7 +601,6 @@ void Player::applySpawnValues(const SpawnData& spawn) { // Inicializa el sprite del jugador void Player::initSprite(const std::string& animations_path) { auto animations = Resource::get()->getAnimations(animations_path); - sprite_ = std::make_unique(animations); sprite_->setWidth(WIDTH); sprite_->setHeight(HEIGHT);