From 06ff11d563bd3ce24384648dbed9282033ae6456 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sat, 25 Apr 2026 12:21:27 +0200 Subject: [PATCH] =?UTF-8?q?fix(player):=20el=20z-order=20del=20saltador=20?= =?UTF-8?q?respecta=20la=20seua=20posici=C3=B3=20al=20s=C3=B2l?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/game/entities/player.hpp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/source/game/entities/player.hpp b/source/game/entities/player.hpp index 5ac11a4..1c03318 100644 --- a/source/game/entities/player.hpp +++ b/source/game/entities/player.hpp @@ -148,20 +148,22 @@ class Player : public AnimatedSprite { // Y de la base del jugador (cara inferior de la caixa de colisió). Usada // per al Z-order contra els sarcs: peus per sobre d'un sarc → darrere; - // per sota → davant. Mentre el jugador està en l'aire, el feet visual - // puja amb `jump_z_` perquè s'ordene davant dels actors a la mateixa - // fila lògica. + // per sota → davant. NO restem `jump_z_`: el saltador no canvia de + // tile lògica, només s'eleva visualment, i el sorting ha de respectar + // la posició al món (un sarc al nord segueix darrere encara que el + // sprite del jugador estigui amunt). Veure també `getGroundFeetY`, + // que coincideix amb aquest mètode i s'usa específicament per + // marcar la posició de la sombra a nivell de sòl. [[nodiscard]] auto getFeetY() const -> float { - return getPosY() + static_cast(collision_y_offset + collision_size) - jump_z_; - } - - // Y de la base del jugador IGNORANT el salt (sempre la base del cos - // al món, no la posició visual). L'usa el render de la sombra perquè - // es pinte sempre al sòl, encara que el jugador estigui enlaire. - [[nodiscard]] auto getGroundFeetY() const -> float { return getPosY() + static_cast(collision_y_offset + collision_size); } + // Alies semàntic: els peus del jugador al sòl. Coincideix amb + // `getFeetY` i s'usa al callsite del render de la sombra per fer + // explícit que la sombra es pinta al pla del sòl, no a la posició + // visual del sprite. + [[nodiscard]] auto getGroundFeetY() const -> float { return getFeetY(); } + // Estat actual de la màquina d'estats. L'usa el render (animació // jump_*), el resolver de col·lisions (filtre per altura) i el // GameScene (per saber si renderitzar la sombra).