From 1af43ef0520228b3d2f3c2b9616b1ca39128658e Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Fri, 24 Apr 2026 22:05:21 +0200 Subject: [PATCH] fix(player): llegeix sprite.size al loadFrom (frameWidth/Height ja no existeixen) --- source/game/entities/player.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/source/game/entities/player.cpp b/source/game/entities/player.cpp index 61bc514..1ef5319 100644 --- a/source/game/entities/player.cpp +++ b/source/game/entities/player.cpp @@ -25,6 +25,19 @@ namespace { // repòs i no contribueix a la velocitat. constexpr Sint16 STICK_DEADZONE = 12000; + // Llegeix la mida del frame des del bloc `sprite: { path, size: [w, h] }` + // (mateix format que la resta de plantilles d'entitat, vegeu + // AnimatedSprite). Extracció per mantenir `Player::loadFrom` sota el + // llindar de complexitat cognitiva (25). + void readSpriteSize(const fkyaml::node& yaml, const std::string& yaml_path, int& w, int& h) { + if (!yaml.contains("sprite") || !yaml["sprite"].contains("size")) { + throw std::runtime_error("Player: manca `sprite.size` a " + yaml_path); + } + const auto& size_node = yaml["sprite"]["size"]; + w = size_node[0].get_value(); + h = size_node[1].get_value(); + } + // Acumula la contribució del mando assignat al jugador (cruceta + // stick esquerre) sobre els acumuladors de velocitat. Extracció // d'`update()` per a mantenir la complexitat cognitiva sota llindar @@ -60,8 +73,7 @@ void Player::loadFrom(const std::string& yaml_path) { const auto* end = begin + bytes.size(); auto yaml = fkyaml::node::deserialize(begin, end); - sprite_w = yaml["frameWidth"].get_value(); - sprite_h = yaml["frameHeight"].get_value(); + readSpriteSize(yaml, yaml_path, sprite_w, sprite_h); if (!yaml.contains("collision")) { throw std::runtime_error("Player: manca bloc `collision:` a " + yaml_path);