arreglos en updateColliderPoints()

This commit is contained in:
2025-11-26 12:26:19 +01:00
parent df54930e14
commit 254ef3d11c
3 changed files with 48 additions and 13 deletions

View File

@@ -7,6 +7,7 @@
#include <memory> // Para shared_ptr, __shared_ptr_access
#include <string> // Para string
#include <utility>
#include <vector> // Para vector
#include "core/rendering/surface_animated_sprite.hpp" // Para SAnimatedSprite
#include "game/gameplay/room.hpp"
@@ -64,6 +65,7 @@ class Player {
//[[nodiscard]] auto isAlive() const -> bool { return is_alive_ || (Options::cheats.invincible == Options::Cheat::State::ENABLED); } // Comprueba si el jugador esta vivo
[[nodiscard]] auto isAlive() const -> bool { return is_alive_; } // Comprueba si el jugador esta vivo
void setPaused(bool value) { is_paused_ = value; } // Pone el jugador en modo pausa
auto handleKillingTiles() -> bool; // Comprueba que el jugador no toque ningun tile de los que matan
#ifdef _DEBUG
// --- Funciones de debug ---
@@ -107,10 +109,10 @@ class Player {
State previous_state_ = State::ON_GROUND; // Estado previo en el que se encontraba el jugador
// --- Variables de colisión ---
SDL_FRect collider_box_{}; // Caja de colisión con los enemigos u objetos
std::array<SDL_FPoint, 8> collider_points_{}; // Puntos de colisión con el mapa
SDL_FPoint under_left_foot_ = {0.0F, 0.0F}; // El punto bajo la esquina inferior izquierda del jugador
SDL_FPoint under_right_foot_ = {0.0F, 0.0F}; // El punto bajo la esquina inferior derecha del jugador
SDL_FRect collider_box_{}; // Caja de colisión con los enemigos u objetos
std::vector<SDL_FPoint> collider_points_{}; // Puntos de colisión con el mapa (dinámico, se adapta al tamaño del sprite)
SDL_FPoint under_left_foot_ = {0.0F, 0.0F}; // El punto bajo la esquina inferior izquierda del jugador
SDL_FPoint under_right_foot_ = {0.0F, 0.0F}; // El punto bajo la esquina inferior derecha del jugador
// --- Variables de juego ---
bool is_alive_ = true; // Indica si el jugador esta vivo o no
@@ -167,7 +169,6 @@ class Player {
// --- Funciones de finalización ---
void animate(float delta_time); // Establece la animación del jugador
auto handleBorders() -> Room::Border; // Comprueba si se halla en alguno de los cuatro bordes
auto handleKillingTiles() -> bool; // Comprueba que el jugador no toque ningun tile de los que matan
void updateVelocity(float delta_time); // Calcula la velocidad en x con aceleración
void markAsDead(); // Marca al jugador como muerto
};