From 8bdc994b75a52f4f0b2efdd0ab19e2f42f5e4257 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Mon, 11 May 2026 17:29:05 +0200 Subject: [PATCH 1/9] feat(render): sombra com a sprite 16x16 compartit --- CMakeLists.txt | 1 + data/entities/player/morcus.yaml | 3 -- data/entities/player/sam.yaml | 3 -- data/entities/shadow/shadow.gif | Bin 0 -> 98 bytes source/core/rendering/effects/shadow.cpp | 43 +++++++++++++++++++++++ source/core/rendering/effects/shadow.hpp | 25 +++++++++++++ source/core/system/director.cpp | 6 ++++ source/game/entities/player.cpp | 35 +++++------------- source/game/entities/player.hpp | 1 - 9 files changed, 83 insertions(+), 34 deletions(-) create mode 100644 data/entities/shadow/shadow.gif create mode 100644 source/core/rendering/effects/shadow.cpp create mode 100644 source/core/rendering/effects/shadow.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 98da76f..77dada9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -94,6 +94,7 @@ set(APP_SOURCES source/core/rendering/sprite/animated_sprite_parser.cpp source/core/rendering/effects/heat_haze.cpp source/core/rendering/effects/scan_reveal.cpp + source/core/rendering/effects/shadow.cpp source/core/rendering/transitions/mosaic.cpp source/core/rendering/transitions/fade_to_black.cpp source/core/rendering/sdl3gpu/sdl3gpu_shader.cpp diff --git a/data/entities/player/morcus.yaml b/data/entities/player/morcus.yaml index d9e2b66..2e64079 100644 --- a/data/entities/player/morcus.yaml +++ b/data/entities/player/morcus.yaml @@ -97,13 +97,10 @@ turn: south_to_north: west # Salt vertical (px de z, no toca la posició al món). -# `shadow_y_offset`: puja la sombra per compensar la franja -# transparent sota els peus del sprite. jump: impulse: 200 gravity: 600 landing_stun_ms: 400 - shadow_y_offset: 3 sound: jump.wav land_sound: land.wav diff --git a/data/entities/player/sam.yaml b/data/entities/player/sam.yaml index a1c20b0..3644177 100644 --- a/data/entities/player/sam.yaml +++ b/data/entities/player/sam.yaml @@ -97,13 +97,10 @@ turn: south_to_north: west # Salt vertical (px de z, no toca la posició al món). -# `shadow_y_offset`: puja la sombra per compensar la franja -# transparent sota els peus del sprite. jump: impulse: 200 gravity: 600 landing_stun_ms: 400 - shadow_y_offset: 3 sound: jump.wav land_sound: land.wav diff --git a/data/entities/shadow/shadow.gif b/data/entities/shadow/shadow.gif new file mode 100644 index 0000000000000000000000000000000000000000..905ac95fb3fd7b8020787f5645aa1a025c57f4ca GIT binary patch literal 98 zcmZ?wbh9u|G++>5XkY*VIWc*~|J;7AA;Hd$0j@@R2F#2=QN^DuoLoR!2c!g~n1M;H vrGMq=xBQFeY`N9F`QD!2{B4gs)DCtUy_lu+Mta5CKYAZxp8Z-U!e9*mbIKoR literal 0 HcmV?d00001 diff --git a/source/core/rendering/effects/shadow.cpp b/source/core/rendering/effects/shadow.cpp new file mode 100644 index 0000000..242b8ce --- /dev/null +++ b/source/core/rendering/effects/shadow.cpp @@ -0,0 +1,43 @@ +#include "core/rendering/effects/shadow.hpp" + +#include + +#include + +#include "core/rendering/surface.hpp" +#include "core/resources/resource_cache.hpp" + +namespace Effects::Shadow { + + void render(int center_x, int feet_y, float height_factor) { + // Lookup únic al primer ús: la Surface viu a Cache durant tota la + // sessió, així evitem la cerca lineal a cada frame. + static const auto SURFACE = Resource::Cache::get().getSurface(CACHE_KEY); + + const int FRAME_COUNT = SURFACE->getWidth() / FRAME_SIZE; + if (FRAME_COUNT <= 0) { return; } + + // Mapping a bandes uniformes: factor 0 → últim (gran), factor 1 → + // primer (petit). Per a 3 fotogrames: [0, 1/3) → 2, [1/3, 2/3) → 1, + // [2/3, 1] → 0. Generalitza a qualsevol nombre de fotogrames per + // si afegim mides intermèdies. + const float CLAMPED = std::clamp(height_factor, 0.0F, 1.0F); + int frame_index = static_cast((1.0F - CLAMPED) * static_cast(FRAME_COUNT)); + frame_index = std::clamp(frame_index, 0, FRAME_COUNT - 1); + + SDL_FRect clip{ + static_cast(frame_index * FRAME_SIZE), + 0.0F, + static_cast(FRAME_SIZE), + static_cast(FRAME_SIZE), + }; + + // Ancoratge: vora inferior del fotograma a `feet_y` — així el + // quadrat 16x16 del sprite encaixa exactament al 16x16 inferior + // d'una entitat 16x16/16x32 centrada en `center_x`. + const int X = center_x - (FRAME_SIZE / 2); + const int Y = feet_y - FRAME_SIZE; + SURFACE->render(X, Y, &clip); + } + +} // namespace Effects::Shadow diff --git a/source/core/rendering/effects/shadow.hpp b/source/core/rendering/effects/shadow.hpp new file mode 100644 index 0000000..33df742 --- /dev/null +++ b/source/core/rendering/effects/shadow.hpp @@ -0,0 +1,25 @@ +#pragma once + +namespace Effects::Shadow { + + // Mida de cada fotograma del sprite compartit de la sombra. + // El sprite és una tira horitzontal de fotogrames de 16x16, ordenats + // del més petit (índex 0) al més gran (últim índex). + constexpr int FRAME_SIZE = 16; + + // Clau amb què `Resource::Cache` té carregada la Surface compartida. + // El precarrega el Director al boot. + constexpr const char* CACHE_KEY = "shadow"; + + // Pinta la sombra al canvas. `height_factor` selecciona el fotograma: + // 0.0 (entitat al terra) → fotograma més gran, 1.0 (pic del salt o + // entitat més alta del terra) → fotograma més petit. La tira es + // divideix en bandes uniformes; valors fora de [0, 1] es clampen. + // + // El fotograma s'ancora al quadrat 16x16 inferior d'una entitat de + // 16x16/16x32 centrada en `center_x` amb peus a `feet_y`: la vora + // inferior del sprite queda exactament a `feet_y`. La posició + // visual de l'oval dins del fotograma la decideix l'artista al GIF. + void render(int center_x, int feet_y, float height_factor); + +} // namespace Effects::Shadow diff --git a/source/core/system/director.cpp b/source/core/system/director.cpp index 53209a0..b7e46a8 100644 --- a/source/core/system/director.cpp +++ b/source/core/system/director.cpp @@ -18,6 +18,7 @@ #include "core/input/key_config.hpp" #include "core/input/mouse.hpp" #include "core/locale/locale.hpp" +#include "core/rendering/effects/shadow.hpp" #include "core/rendering/notifier.hpp" #include "core/rendering/render_info.hpp" #include "core/rendering/screen.hpp" @@ -162,6 +163,11 @@ Director::Director() { Resource::Cache::get().loadSurface(ROOM_TEXT_FONT_GIF_KEY, UiConfig::get().roomTextFont().gif); Resource::Cache::get().getSurface(ROOM_TEXT_FONT_GIF_KEY)->setPalette(Resource::Cache::get().getPalette("ui")); + // Sprite compartit de la sombra (tira horitzontal de fotogrames de + // 16x16, de petit a gran). El consumeix `Effects::Shadow::render`, + // que el reaprofiten Player i qualsevol entitat futura compatible. + Resource::Cache::get().loadSurface(Effects::Shadow::CACHE_KEY, "data/entities/shadow/shadow.gif"); + // Pistes de música del cicle de sala (intro/playing/outro). Es preloden // ací perquè formen part del preload d'assets, com la font i la paleta; // la lògica de quina sona en cada estat viu a `GameScene`. diff --git a/source/game/entities/player.cpp b/source/game/entities/player.cpp index d20d0b2..6924bc2 100644 --- a/source/game/entities/player.cpp +++ b/source/game/entities/player.cpp @@ -13,6 +13,7 @@ #include "core/input/gamepad_manager.hpp" #include "core/input/input_state.hpp" #include "core/rendering/canvas.hpp" +#include "core/rendering/effects/shadow.hpp" #include "core/rendering/screen.hpp" #include "core/rendering/surface.hpp" #include "core/resources/palette_loader.hpp" @@ -179,7 +180,6 @@ void Player::readJumpBlock(const fkyaml::node& yaml) { if (j.contains("impulse")) { jump_config.impulse_px_per_s = j["impulse"].get_value(); } if (j.contains("gravity")) { jump_config.gravity_px_per_s2 = j["gravity"].get_value(); } if (j.contains("landing_stun_ms")) { jump_config.landing_stun_ms = j["landing_stun_ms"].get_value(); } - if (j.contains("shadow_y_offset")) { jump_config.shadow_y_offset = j["shadow_y_offset"].get_value(); } // Sons opcionals: el nom del fitxer (relatiu a Defaults::Paths::AUDIO_SOUNDS_DIR) // val tant de clau al Resource::Cache com de basename per a la càrrega. // Si el camp manca, la clau queda buida i `playSound` no es crida. @@ -1435,36 +1435,17 @@ void Player::renderShadow() const { // que `enterDying` netegi el flag. if (falling_through_hole_) { return; } - // Sombra centrada al sprite, recolzada a la línia dels peus reals - // (ignorant `jump_z_`). L'amplada es redueix proporcional a l'altura - // del salt — al pic queda més estreta, donant la sensació de - // "elevació" sense necessitat de coordenades 3D reals. Si el - // jump_config té un divisor zero (cas degenerat), només dibuixem - // la sombra a mida plena per evitar nan. + // `height_factor`: 0 al terra → fotograma més gran, 1 al pic → més + // petit. Si el `jump_config` té un divisor zero (cas degenerat) caem + // a 0 per no propagar nan al renderer. const auto PEAK = (jump_config.gravity_px_per_s2 > 0.0F) ? (jump_config.impulse_px_per_s * jump_config.impulse_px_per_s) / (2.0F * jump_config.gravity_px_per_s2) : 0.0F; - const float NORM_Z = (PEAK > 0.0F) ? std::clamp(jump_z_ / PEAK, 0.0F, 1.0F) : 0.0F; - constexpr float MAX_SHRINK = 0.4F; // Fins a un 40% més estreta al pic. - const float SHRINK = 1.0F - (NORM_Z * MAX_SHRINK); + const float HEIGHT_FACTOR = (PEAK > 0.0F) ? std::clamp(jump_z_ / PEAK, 0.0F, 1.0F) : 0.0F; - constexpr int SHADOW_H = 3; - const auto SHADOW_W = static_cast(static_cast(base_size) * SHRINK); - const float CX = getPosX() + (static_cast(sprite_w) * 0.5F); - const float GROUND_Y = getGroundFeetY(); - const auto SX = static_cast(CX - (static_cast(SHADOW_W) * 0.5F)); - // Pugem la sombra `shadow_y_offset` px per compensar la franja - // transparent que el sprite del jugador té sota els peus reals - // (perquè la silueta camine pel mig del passadís en falsa - // perspectiva). Sense aquest ajust, la sombra apareix per sota - // del passadís. - const auto SY = static_cast(GROUND_Y) - SHADOW_H - jump_config.shadow_y_offset; - - // ARGB negre amb alpha ~40%. `blendRect` mescla sobre el canvas; així - // la sombra fosqueja el sòl (pintat o no) sense tapar-lo del tot. - constexpr std::uint32_t SHADOW_ARGB = 0x00000000U; - constexpr std::uint8_t SHADOW_ALPHA = 100; - Screen::get().blendRect(SX, SY, SHADOW_W, SHADOW_H, SHADOW_ARGB, SHADOW_ALPHA); + const auto CENTER_X = static_cast(getPosX() + (static_cast(sprite_w) * 0.5F)); + const auto FEET_Y = static_cast(getGroundFeetY()); + Effects::Shadow::render(CENTER_X, FEET_Y, HEIGHT_FACTOR); } // Sufix d'animació per cardinal — empat 1:1 amb l'enum `Facing` i el diff --git a/source/game/entities/player.hpp b/source/game/entities/player.hpp index a574873..33a3ce2 100644 --- a/source/game/entities/player.hpp +++ b/source/game/entities/player.hpp @@ -633,7 +633,6 @@ class Player : public AnimatedSprite { float impulse_px_per_s{0.0F}; // Velocitat vertical inicial. float gravity_px_per_s2{0.0F}; // Acceleració descendent constant. int landing_stun_ms{0}; // Stun en aterrar (no es mou ni salta). - int shadow_y_offset{0}; // Px que puja la sombra (compensa transparències al peu del sprite). std::string sound_key; // Clau al Resource::Cache del so de despegue (buit = silenci). std::string land_sound_key; // Clau del so d'aterratge (buit = silenci). }; From d14da0e61f2debc88c1e22e11572cc11ee2b6e00 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Mon, 11 May 2026 17:30:15 +0200 Subject: [PATCH 2/9] fix(make): el target pack no canvia el build_type --- Makefile | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4315e0c..c11c0a3 100644 --- a/Makefile +++ b/Makefile @@ -293,8 +293,14 @@ rebuild: clean all # Empaqueta data/ a $(BUILDDIR)/resources.pack (format AE26). Força un rebuild # del pack encara que res no hagi canviat dins data/. L'empaquetat també es fa # automàticament a cada `make`/`make debug` via el target CMake `resource_pack`. +# +# NO passem `-DCMAKE_BUILD_TYPE`: així respectem el tipus ja configurat al +# `CMakeCache.txt` (Debug si vens de `make debug`, Release si vens de +# `make release`). Si forcéssim Release ací, el següent build de debug +# invalidaria la cache i recompilaria-ho tot. El binari `pack_resources` +# és una utilitat petita on el build type és irrellevant. pack: - @cmake -S . -B $(BUILDDIR) $(CMAKE_GEN) -DCMAKE_BUILD_TYPE=Release $(CMAKE_DEFS) + @cmake -S . -B $(BUILDDIR) $(CMAKE_GEN) $(CMAKE_DEFS) @cmake --build $(BUILDDIR) --target pack_resources @./$(BUILDDIR)/pack_resources data $(BUILDDIR)/resources.pack From 8c84892250c3c1b32c94446e949be345354d8299 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Mon, 11 May 2026 17:44:10 +0200 Subject: [PATCH 3/9] art(dust): retocs al sprite --- data/entities/dust/dust.gif | Bin 306 -> 303 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/entities/dust/dust.gif b/data/entities/dust/dust.gif index 5aa1062374541ea0693936094cb27b172e101aba..8f017faa3b831f6d80ce15b348816798e35d2f47 100644 GIT binary patch delta 243 zcmV|@5CD+?00000qo=~(;OLPSBL@fq5C8xI?U6tye-8`_ zhs2`sh)gP%%%<}RjY_8u0n19wYPZ}Ewj23U#1nG(A~2KG;I{j1NT1~LQXMX0ud2BNdRmj?1ub^j4{iLD-n%Gy}Rk`IXG$EU_2~%+`Tys t?ijc-PQI?Hj_|EOJfX~9Z-0-oDz9L?J&6x6pum9y3mQC#FkzMg06Q(aZU_JX delta 246 zcmVhi0;L2qe_EuxALEvbY$jQVGUbHZ_E4m`U)E> zJ4;(@dyAW^yUW|_`wJW_JWO0{OiblT5fD&z!hFn>9I?FV%v{*H{%#GgzEVH!J};tgkGqF&LAhst{24rmFrmVQ2?_uJJJ4`yO8@`> From cba46642c6467fb2524b250b58ee81c21ce5a95a Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Mon, 11 May 2026 19:47:28 +0200 Subject: [PATCH 4/9] =?UTF-8?q?feat(mummy):=20SPAWN=20dirigit=20per=20l'an?= =?UTF-8?q?imaci=C3=B3=20raise?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/entities/mummy/mummy.gif | Bin 1207 -> 1953 bytes data/entities/mummy/mummy.yaml | 13 ++++---- source/game/entities/concrete/mummy.cpp | 38 +++++++++++++++++------- source/game/entities/concrete/mummy.hpp | 6 ++++ source/game/entities/hazard.hpp | 5 ++++ tests/test_entities_smoke.cpp | 13 ++++---- tests/test_whip_attack.cpp | 13 ++++---- 7 files changed, 60 insertions(+), 28 deletions(-) diff --git a/data/entities/mummy/mummy.gif b/data/entities/mummy/mummy.gif index 9352a9688e68beb38eaee257ad0197571f526203..7b56a4af635aec71301afcd35825d480b6ebdfa1 100644 GIT binary patch delta 786 zcmV+t1MU2`384=OM@dFFH(@{k;E@Sd0pPJ<0|Wv8lVk)=f3N-a+;{K&_uz*w{`lmV zZ~pn{r?39{?6>d!`|!s?7s$W{ z7J+}@vfuw^Lj#YMfjqm(j1vTd!F3VqKSB`9A%<{24@fX%LQsHPCZPwl(2F?$n*agQ zutB$=LKPxxe;9TqCV?4Ns$I`H;%`h~uB9;t31cHTsGNd$fV8(xG z^B=RY2o)~>QqO^445JvwNX9an(Ode9pc8LX!6S4qHyR|}8qi~d4^nJ|IXvRJ))+?| zsL&8BJlO?a=teqPV1_S|qZ@8mjCk$qJEQU;O-2<&e^jS}S64BQSL+Lg4_1Kb)BoqR_`_I!Y0lSacD_q_HaVsEO&e_>8I* z=^^D9f83$68Ja~=?^?uh(wNlqCd}Eb8~(f$9umh9x&_EifC^J0G-4`TdB=>}tJNs~hBz!at< z^yDFFXwvpV<`v8u~7zcLJ3pQdQi!Vehda5kY2 zF^-*86;N1zaSNYC<3${b2R>kxJg&Th8mru8TTi8=6%EN*#A#+P!J&>@f^}&RsuDcA zq$7i9GoYaoCNaT=7_>==O8wN4iY!XYXIg|&Z7Ulmppnousi8IWIXyr)d4ibWy<{=>YQz= zu2n@lFm7f0Qaal*mo7Y*UR*SDO;1USXr4)4hIo}bV{}G&p!vn_o<}X`!3~=3Em?cP Qqs9GA@QWLDK?DE*JNT|?() : std::string("mummy"); collides_ = true; interactable_ = false; @@ -141,16 +142,18 @@ Mummy::Mummy(const fkyaml::node& yaml) changeDirection(0.0F, 1.0F); } - // Estat SPAWN inicial: la mòmia naix visible i quieta, esperant que el - // GameScene li armi el comptador via `triggerSpawnExit()` (cridat al - // final de la subfase text-exit de ROOM_INTRO). Si el YAML no declara - // `spawn.duration_s`, default 0 ⇒ al primer update post-trigger passa - // directament a ACTIVE. - float spawn_duration_s = 0.0F; - if (yaml.contains("spawn") && yaml["spawn"].contains("duration_s")) { - spawn_duration_s = yaml["spawn"]["duration_s"].get_value(); + // Estat SPAWN inicial: la mòmia naix en SPAWNING amb l'animació + // `raise` activa (16 frames @ 8fps, no-loop). La duració del SPAWN + // la marca la pròpia animació — `Mummy::update` la tickeja, i quan + // `completed()`, crida `endSpawn()` i restaura la `walk_*` per la + // direcció actual. Passem 0 al countdown del DynamicHazard perquè + // no s'utilitza en aquest cas (el nostre `update` retorna abans). + enterSpawn(0.0F); + anim_ = anim_raise_; + if (anim_.has_value()) { + anim_->reset(); + flip_ = anim_->flipMode(); } - enterSpawn(spawn_duration_s); // Configuració de l'estat HURT: opcional. Si el bloc no apareix, la // mòmia no entrarà mai a HURT efectiu (defensiu); el WhipAttack la @@ -692,6 +695,21 @@ void Mummy::hurtStep(float delta_time) { } void Mummy::update(float delta_time) { + if (isSpawning()) { + // SPAWN dirigit per animació: la `raise` és no-loop, així que + // `completed()` ens marca el final. Mentre dura, NO cridem + // `DynamicHazard::update`: la base hi té el countdown i ja + // hauria saltat a ACTIVE (passem `enterSpawn(0)`), i el `step()` + // d'IA mouria la mòmia abans de "aixecar-se". En completar, + // tornem a la `walk_*` que toca segons la direcció ja triada + // al ctor (initial_direction de l'IA). + if (anim_.has_value()) { anim_->tick(delta_time); } + if (anim_.has_value() && anim_->completed()) { + endSpawn(); + changeDirection(getDirX(), getDirY()); + } + return; + } if (state_ == State::HURT) { // Avancem l'animació inline (no podem cridar `Entity::update` ni // `DynamicHazard::update`: el primer salta una capa virtual i el diff --git a/source/game/entities/concrete/mummy.hpp b/source/game/entities/concrete/mummy.hpp index 3a766a9..e94eb92 100644 --- a/source/game/entities/concrete/mummy.hpp +++ b/source/game/entities/concrete/mummy.hpp @@ -177,6 +177,12 @@ class Mummy : public DynamicHazard { AnimationComponent anim_walk_east_; AnimationComponent anim_walk_west_; + // Animació d'aparició (no-loop). Mentre `isSpawning()`, `update()` + // la tickeja sense moure la mòmia; quan `completed()`, la mòmia + // transita a ACTIVE via `endSpawn()` i conmuta a la walk_* que + // toca segons direcció. + AnimationComponent anim_raise_; + // Estat HURT i la seua configuració. `hurt_speed_` és l'efectiva // (resultat d'aplicar el `speed` del bloc `hurt:` o, si val 0, la // velocitat normal de la mòmia). diff --git a/source/game/entities/hazard.hpp b/source/game/entities/hazard.hpp index b200b57..31e6fe3 100644 --- a/source/game/entities/hazard.hpp +++ b/source/game/entities/hazard.hpp @@ -96,6 +96,11 @@ class DynamicHazard : public Hazard { // Arma el comptador del SPAWN. A partir d'aquí, cada `update(dt)` // descompta `dt` fins arribar a 0 i transitar a ACTIVE. void triggerSpawnExit() { spawn_exit_armed_ = true; } + // Transició directa a ACTIVE, sense passar pel countdown. Pensat + // per a subclasses amb SPAWN dirigit per animació: gestionen el + // seu propi `update()` mentre `isSpawning()` i criden ací quan la + // seua animació d'aparició ha completat. + void endSpawn() { spawn_state_ = SpawnState::ACTIVE; } [[nodiscard]] auto isSpawning() const -> bool { return spawn_state_ == SpawnState::SPAWNING; } [[nodiscard]] auto getSpawnDurationS() const -> float { return spawn_duration_s_; } diff --git a/tests/test_entities_smoke.cpp b/tests/test_entities_smoke.cpp index d94e13b..697f329 100644 --- a/tests/test_entities_smoke.cpp +++ b/tests/test_entities_smoke.cpp @@ -69,13 +69,14 @@ namespace { #define REQUIRE(cond) check((cond), #cond, __FILE__, __LINE__) - // Treu la mòmia de l'estat SPAWN inicial (Mummy::Mummy ara hi entra). - // Equival al que fa GameScene al final del text-exit de ROOM_INTRO: arma - // el comptador i consumeix la durada amb un update. Tests que operin - // directament sobre HURT/ROAMING l'han de cridar abans. + // Treu la mòmia de l'estat SPAWN inicial (Mummy::Mummy ara hi entra + // amb l'animació `raise` activa). Tickem amb dt gran fins sortir de + // SPAWNING — mateix path que `Mummy::update` executa al final de + // l'animació en partida real. El for limita el bucle defensivament. void exitMummySpawn(Mummy& mummy) { - mummy.triggerSpawnExit(); - mummy.update(mummy.getSpawnDurationS() + 0.001F); + for (int i = 0; i < 32 && mummy.isSpawning(); ++i) { + mummy.update(0.5F); + } } void testFactory() { diff --git a/tests/test_whip_attack.cpp b/tests/test_whip_attack.cpp index cf43c07..8f03f81 100644 --- a/tests/test_whip_attack.cpp +++ b/tests/test_whip_attack.cpp @@ -32,12 +32,15 @@ namespace { #define REQUIRE(cond) check((cond), #cond, __FILE__, __LINE__) - // Treu la mòmia de l'estat SPAWN inicial (Mummy::Mummy ara hi entra). Els - // tests del whip necessiten que la mòmia estigui ACTIVE per reaccionar - // al fueteig — sense això, `enterHurt` torna early per `isSpawning()`. + // Treu la mòmia de l'estat SPAWN inicial (Mummy::Mummy ara hi entra + // amb l'animació `raise` activa). Els tests del whip necessiten que la + // mòmia estigui ACTIVE per reaccionar al fueteig — sense això, + // `enterHurt` torna early per `isSpawning()`. Tickem amb dt gran fins + // sortir de SPAWNING (mateix path real, només accelerat). void exitMummySpawn(Mummy& mummy) { - mummy.triggerSpawnExit(); - mummy.update(mummy.getSpawnDurationS() + 0.001F); + for (int i = 0; i < 32 && mummy.isSpawning(); ++i) { + mummy.update(0.5F); + } } // Caja de jugador "estàndard" AEE: 16×32 amb cantonada (x, y). From 3e31a88f7882f50ec466b6eeb7c2922e69dbf3f1 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Mon, 11 May 2026 19:56:16 +0200 Subject: [PATCH 5/9] fix(anim): walk_* arrenca en frame distint del stand --- data/entities/player/morcus.yaml | 8 ++++---- data/entities/player/sam.yaml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/data/entities/player/morcus.yaml b/data/entities/player/morcus.yaml index 2e64079..0b485a2 100644 --- a/data/entities/player/morcus.yaml +++ b/data/entities/player/morcus.yaml @@ -30,10 +30,10 @@ animations: stun_east: { frames: [18] } stun_west: { frames: [18], flip_h: true } - walk_south: { frames: [0, 1, 2, 3], frame_ms: 100 } - walk_north: { frames: [4, 5, 6, 7], frame_ms: 100 } - walk_east: { frames: [8, 9, 10, 11], frame_ms: 100 } - walk_west: { frames: [8, 9, 10, 11], frame_ms: 100, flip_h: true } + walk_south: { frames: [1, 2, 3, 0], frame_ms: 100 } + walk_north: { frames: [5, 6, 7, 4], frame_ms: 100 } + walk_east: { frames: [9, 10, 11, 8], frame_ms: 100 } + walk_west: { frames: [9, 10, 11, 8], frame_ms: 100, flip_h: true } hurt_south: { frames: [0, 1, 2, 3], frame_ms: 100 } hurt_north: { frames: [4, 5, 6, 7], frame_ms: 100 } diff --git a/data/entities/player/sam.yaml b/data/entities/player/sam.yaml index 3644177..b806a48 100644 --- a/data/entities/player/sam.yaml +++ b/data/entities/player/sam.yaml @@ -30,10 +30,10 @@ animations: stun_east: { frames: [18] } stun_west: { frames: [18], flip_h: true } - walk_south: { frames: [0, 1, 2, 3], frame_ms: 100 } - walk_north: { frames: [4, 5, 6, 7], frame_ms: 100 } - walk_east: { frames: [8, 9, 10, 11], frame_ms: 100 } - walk_west: { frames: [8, 9, 10, 11], frame_ms: 100, flip_h: true } + walk_south: { frames: [1, 2, 3, 0], frame_ms: 100 } + walk_north: { frames: [5, 6, 7, 4], frame_ms: 100 } + walk_east: { frames: [9, 10, 11, 8], frame_ms: 100 } + walk_west: { frames: [9, 10, 11, 8], frame_ms: 100, flip_h: true } hurt_south: { frames: [0, 1, 2, 3], frame_ms: 100 } hurt_north: { frames: [4, 5, 6, 7], frame_ms: 100 } From 932d195eb072c1ac9548106d2dffb450b4f2b384 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Mon, 11 May 2026 20:46:18 +0200 Subject: [PATCH 6/9] =?UTF-8?q?feat(audio):=20so=20del=20sarc=C3=B2fag=20a?= =?UTF-8?q?mb=20pitch=20aleatori=20per=20obertura?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/audio/sounds/open_sarc.wav | Bin 0 -> 198222 bytes data/entities/sarcophagus/sarcophagus.gif | Bin 848 -> 1610 bytes data/entities/sarcophagus/sarcophagus.yaml | 16 +++++++- source/core/audio/audio.cpp | 16 ++++++++ source/core/audio/audio.hpp | 6 +++ source/core/audio/jail_audio.cpp | 6 +++ source/core/audio/jail_audio.hpp | 8 ++++ source/game/entities/concrete/sarcophagus.cpp | 38 ++++++++++++++++++ source/game/entities/concrete/sarcophagus.hpp | 8 ++++ tests/audio_cache_stubs.cpp | 3 ++ tests/test_entities_smoke.cpp | 22 +++++----- 11 files changed, 112 insertions(+), 11 deletions(-) create mode 100644 data/audio/sounds/open_sarc.wav diff --git a/data/audio/sounds/open_sarc.wav b/data/audio/sounds/open_sarc.wav new file mode 100644 index 0000000000000000000000000000000000000000..48415e55a31821124a1a4b0ef2373a77c2109a7d GIT binary patch literal 198222 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 literal 0 HcmV?d00001 diff --git a/data/entities/sarcophagus/sarcophagus.gif b/data/entities/sarcophagus/sarcophagus.gif index 51acd90458b87a128cbcc6c0396660b992395ae5..a07ef539fa08796166824086d704641d4c36950f 100644 GIT binary patch literal 1610 zcmV-Q2DSM|Nk%v~VPF720K@00sXb zAdX~do@lDBZ0o*oEYEap-*~R?eDD9jpm0bm8jmQ4Qu$~imrUmo>S#WmP%AOPO(+u8 z2W0$Ejvk9NdU36Fz2N2;Qg)ovZ1u@%KJ%*ufo}-~a!hFu4T^~k5NRcUBvy3~fdzww zVuuTijf;Uz7t*?rnji4e9b5Uhhbeawe zOM!LDjB9zEifsU4#bjc}qH1JIR@SPM5DW~QV~^Q$a@}R$bm2|o3gzeNvH%RC?c8Jh z;IRRBtlqx|_~twcs4dzYhVklzd0?c zWME*cs=)RJJGEOjFIr}b&o%!0I4;u2R_c@9SI;(k9IIN6Vit#j#y%d381KA6-xYA1{W{d6Qdfc1aPDPOd_ylhzdCQ9+auI zNTii&VCi8<0DM@YmPfuxB92tr6bMlXlvw4N4v=_cn@N6onwZS2=zx@XRymD~_p#|F zjd9BP=Aa1lVu=BgX8LDH0}wF4mY{}2Cm41Xfaj5WR_Oq!Z3@uor=e~+sVXR1YDuJ$ zvdXEavBo+8rMCJAYNrJ7`lkrH!rJSW17!N>tPDr$yRWCzR_m_~0S~Nh z!TOGi#KRCrEb+t?S8Vac7-y{U#vFGX#C}p30rE9PjEqHvTXgY7810O*s2(OnatkGv zU_#OwuzWI0D0T2mi7uzHaU6n28tkQEHv3|=1Lm1vtxvW)8L{v6yK9_vH9Tldh!z!dy)V#PnX3iI zJaNXoNSkt`>2?5bD`O8F1H!#loENfvkH&J%J*UKX;E7b7Kjme2UZ394Kb`%1!yo9F zv%l_4s6ACH6oaB5p9e9(J_<14dMM-`1!Aay8+sstBA6ow+=vSu)DMq<@}v0?twU#8 zL!U@wARUd2KJa0nhM>Tq`W~Rl6^R-%@>2&t*rWsPs0=+SAyG~kB1PH6 zPd7wS4x7|L%SA~PRQe&KA_&DUi%?kRfTL zCgJ3+WGyR`fCOc(w$!S2eUg!p%%h{k^+{$SvR~427qVE{N>05pVgCA8o9UDdXW1}e Ijvxd8JNOsE$^ZZW literal 848 zcmV-W1F!r?Nk%v~VK4w70M!5h0000u7XV#11XMT|VKxJPQ5t?wAc9m6f=?QPQW~9f z9-(y^i(M>*UN?(jFPwKQpKUjpbvUJOFQjrSqi#2%a5bK9L7H$!mU30Oe?gy*Jf@8; zq>eehjX0!`I=zrKz>G7^o;J{*H_V|l)~7h&tv{WPM4gdAyM{rkmrb^eP^p+ux~f^O zsBN^VYObkrv8r*wjX}$tLDa2F;jBg2u6W?DeeKRx-^^w2(`@+Ra@Ws?>(GV&^_lq+tXE0}~SxaRZZkHy$26nl8AyCniKJcRq)OVPZXXlr$ZC zGy}3FG(N_ffr1+xI-NN~#lSv3bv@!eGh)geIpTV>VlXf_4-Yvy^g1IW*g8HQz9V8Y z-@xGr=)<2O6)JA1V>TuSwFL|2)gvKd13e$t04$?{pn%7ZAU_5OP+-=cV1JkqL_v$* zyFnci6bRvnMu-psZic84=jMq200s(BP;?`~n*!fz5Ty4Y#R?tFV$Q62Gv`g76?_5} zO4KL?q&}1eWa<>^o|p(^IKnX^1Oc5jT*T1rAW4hoYViaSt|l&~f0vgpH6=ryiLA&pH~x%rUE%f#Ho5 zG-d?o@NY)$4l%q4CpP1QmmbVS`AEa8`OS!96g=21hDB5m&C6Av5h6Eoc0OLTc->sY zhzErpLPargmG|~gEIKY5`0l4DIdo(~p zUwvN4qDKV}%rM{|f^e{H0e}Vq5WocyM9@G33|^q31t&&DODXy3@x}}hpvU128+=$| zhz$1VV*v3%Fh>W=I77o51_~HpJSFrf;*U@=7=aw`RnUk4_(kdD5L*hNB?c;playSound(sound, 0, static_cast(group)); + if (CH >= 0 && speed != 1.0F) { + engine_->setChannelSpeed(CH, speed); + } +} + // Reprodueix un so processat per un eco definit a sounds.yaml. Si el preset no // existeix o l'engine retorna -1 (cap de canals d'efecte plé), cau a playSound // sec — l'usuari sent el so encara que la cua no s'apliqui. diff --git a/source/core/audio/audio.hpp b/source/core/audio/audio.hpp index 1f930a4..891c00d 100644 --- a/source/core/audio/audio.hpp +++ b/source/core/audio/audio.hpp @@ -85,6 +85,12 @@ class Audio { // --- Control de sons --- void playSound(const std::string& name, Group group = Group::GAME); // Reproduir so puntual per nom (muta globals de Ja) void playSound(Ja::Sound* sound, Group group = Group::GAME); // Reproduir so puntual per punter (muta globals de Ja) + // Reprodueix un so amb la velocitat (i to) escalats per `speed`: + // 1.0 = normal, 0.95 ≈ -5% (més greu i lent), 1.05 ≈ +5% (més + // agut i ràpid). Mateixa semàntica que `setMusicSpeed`. Útil per a + // variacions subtils que eviten la fatiga d'escoltar el mateix + // sample idèntic (p.ex. obertures de sarcòfag, picks d'ítems). + void playSound(const std::string& name, Group group, float speed); // Reprodueix un so processat per un efecte definit a data/config/sounds.yaml // (preset_name busca a SoundEffectsConfig). Si el preset no existeix // o el motor està al cap de canals amb efecte, fa fallback a playSound diff --git a/source/core/audio/jail_audio.cpp b/source/core/audio/jail_audio.cpp index 83ec17a..20e57d8 100644 --- a/source/core/audio/jail_audio.cpp +++ b/source/core/audio/jail_audio.cpp @@ -430,6 +430,12 @@ namespace Ja { return channel; } + void Engine::setChannelSpeed(const int channel, const float ratio) { + if (channel < 0 || channel >= MAX_SIMULTANEOUS_CHANNELS) { return; } + if (channels_[channel].stream == nullptr) { return; } + SDL_SetAudioStreamFrequencyRatio(channels_[channel].stream, ratio); + } + void Engine::pauseChannel(const int channel) { forEachTargetChannel(channel, [](Channel& ch) { if (ch.state == ChannelState::PLAYING) { diff --git a/source/core/audio/jail_audio.hpp b/source/core/audio/jail_audio.hpp index 88db498..3e46dca 100644 --- a/source/core/audio/jail_audio.hpp +++ b/source/core/audio/jail_audio.hpp @@ -192,6 +192,14 @@ namespace Ja { // --- So --- auto playSound(Sound* sound, int loop = 0, int group = 0) -> int; auto playSoundOnChannel(Sound* sound, int channel, int loop = 0, int group = 0) -> int; + // Ajusta la velocitat de reproducció d'un canal actiu via + // `SDL_SetAudioStreamFrequencyRatio`. 1.0 = normal. Igual que a + // `setMusicSpeed`, puja/baixa el to junt amb la velocitat + // (efecte "chipmunk"); per a SFX curts arcade és el que volem. + // No-op si el canal no està actiu. Cridar-lo just després de + // `playSound`/`playSoundOnChannel` perquè el ratio cobreixi + // tota la reproducció. + void setChannelSpeed(int channel, float ratio); // Reproducció amb so processat per un efecte. Retorna el canal // assignat o -1 si no queden slots d'efecte (MAX_EFFECT_CHANNELS). // El sound original només s'usa per consultar el spec/buffer; el diff --git a/source/game/entities/concrete/sarcophagus.cpp b/source/game/entities/concrete/sarcophagus.cpp index d001b7b..82181b5 100644 --- a/source/game/entities/concrete/sarcophagus.cpp +++ b/source/game/entities/concrete/sarcophagus.cpp @@ -1,14 +1,26 @@ #include "game/entities/concrete/sarcophagus.hpp" +#include #include #include +#include "core/audio/audio.hpp" +#include "core/resources/resource_cache.hpp" #include "game/entities/entity_factory.hpp" #include "game/entities/entity_manager.hpp" #include "game/entities/event_bus.hpp" +#include "utils/defaults.hpp" namespace { + // RNG local al mòdul, mateix patró que `mummy.cpp`: llavor fixa per + // facilitar la depuració. Si algun dia volem aleatoritat real entre + // partides, prou amb llegir-la de std::random_device. + auto rng() -> std::mt19937& { + static std::mt19937 k_rng_{0xCAFEU}; + return k_rng_; + } + auto buildAnimation(const fkyaml::node& yaml, const std::string& key) -> AnimationComponent { std::vector frames = {0}; float fps = 1.0F; @@ -57,6 +69,20 @@ Sarcophagus::Sarcophagus(const fkyaml::node& yaml) interactable_ = true; readTileSize(yaml, tile_size_w_, tile_size_h_); anim_ = anim_closed_; + + // Sons opcionals (bloc `sound:` del YAML). El basename val tant de + // clau al Resource::Cache com de path dins `Defaults::Paths::AUDIO_SOUNDS_DIR`. + // Mateix patró que `mummy.hurt.sound` i `player.jump.sound`. + if (yaml.contains("sound")) { + const auto& s = yaml["sound"]; + if (s.contains("opening")) { + opening_sound_key_ = s["opening"].get_value(); + Resource::Cache::get().loadSound(opening_sound_key_, std::string{Defaults::Paths::AUDIO_SOUNDS_DIR} + opening_sound_key_); + } + if (s.contains("opening_pitch_spread")) { + opening_pitch_spread_ = s["opening_pitch_spread"].get_value(); + } + } } void Sarcophagus::place(int anchor_col, int anchor_row, const BlockedPredicate& is_blocked) { @@ -122,6 +148,18 @@ void Sarcophagus::notifyTilePainted(int col, int row) { state_ = State::OPENING; anim_ = anim_opening_; if (anim_.has_value()) { anim_->reset(); } + if (!opening_sound_key_.empty() && Audio::get() != nullptr) { + // Variació de pitch/velocitat per evitar la fatiga d'escoltar + // el mateix sample idèntic a cada obertura. Si l'spread és 0 + // (default), reproduïm amb ratio 1.0; en cas contrari sortegem + // uniformement [1 - spread, 1 + spread]. + if (opening_pitch_spread_ > 0.0F) { + std::uniform_real_distribution dist(1.0F - opening_pitch_spread_, 1.0F + opening_pitch_spread_); + Audio::get()->playSound(opening_sound_key_, Audio::Group::GAME, dist(rng())); + } else { + Audio::get()->playSound(opening_sound_key_, Audio::Group::GAME); + } + } } } diff --git a/source/game/entities/concrete/sarcophagus.hpp b/source/game/entities/concrete/sarcophagus.hpp index df70bfc..de4c930 100644 --- a/source/game/entities/concrete/sarcophagus.hpp +++ b/source/game/entities/concrete/sarcophagus.hpp @@ -2,6 +2,7 @@ #include #include +#include #include #include "external/fkyaml_node.hpp" @@ -83,5 +84,12 @@ class Sarcophagus : public Interactable { AnimationComponent anim_opening_; AnimationComponent anim_open_; + // Clau (basename del fitxer) al Resource::Cache del so que es dispara + // a la transició CLOSED → OPENING. Buit ⇒ no sona res. + std::string opening_sound_key_; + // Variació uniforme del ratio de reproducció al voltant de 1.0. Cada + // obertura sorteja [1 - spread, 1 + spread]. 0 ⇒ ratio fix a 1.0. + float opening_pitch_spread_{0.0F}; + bool opened_event_emitted_{false}; }; diff --git a/tests/audio_cache_stubs.cpp b/tests/audio_cache_stubs.cpp index aafa42e..e9ee622 100644 --- a/tests/audio_cache_stubs.cpp +++ b/tests/audio_cache_stubs.cpp @@ -18,6 +18,9 @@ auto Audio::get() -> Audio* { void Audio::playSound(const std::string& /*name*/, Audio::Group /*group*/) { } +void Audio::playSound(const std::string& /*name*/, Audio::Group /*group*/, float /*speed*/) { +} + namespace Resource { auto Cache::get() -> Cache& { diff --git a/tests/test_entities_smoke.cpp b/tests/test_entities_smoke.cpp index 697f329..e18a04d 100644 --- a/tests/test_entities_smoke.cpp +++ b/tests/test_entities_smoke.cpp @@ -166,9 +166,11 @@ namespace { REQUIRE(sarc->getVisitedCount() == 8); REQUIRE(sarc->getState() == Sarcophagus::State::OPENING); - // Un update amb l'animació `opening` d'1 frame loop=false completa - // la transició a OPEN. - sarc->update(0.0F); + // Tickem prou per consumir l'animació `opening` (4 frames @ 6fps = + // ~0.67s). Quan completa, la transició OPENING → OPEN es dispara. + for (int i = 0; i < 16 && sarc->getState() == Sarcophagus::State::OPENING; ++i) { + sarc->update(0.1F); + } REQUIRE(sarc->getState() == Sarcophagus::State::OPEN); } @@ -208,12 +210,14 @@ namespace { forceOpen(s1); forceOpen(s2); - // Un primer tick: cada sarc transiciona OPENING → OPEN i publica; - // l'handler del manager compta i, en arribar al total, crida - // door->open() — que en aquest mateix tick (la iteració sobre - // entities continua) farà transitar la porta OPENING → OPEN perquè - // l'animació és d'1 frame loop=false. - manager.update(0.0F); + // Tickem prou per consumir l'animació `opening` dels sarcs (4 + // frames @ 6fps) i la de la porta. Cada sarc transiciona + // OPENING → OPEN i publica; l'handler del manager compta i, en + // arribar al total, crida `door->open()`, que també necessita + // tickar fins acabar la seua animació d'obertura. + for (int i = 0; i < 20 && door_ptr->getState() != Door::State::OPEN; ++i) { + manager.update(0.1F); + } REQUIRE(manager.openedSarcophagusCount() == 2); REQUIRE(door_ptr->getState() == Door::State::OPEN); From 629baaaec32c020a2138bc0b6000ba05195812fc Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Mon, 11 May 2026 22:18:56 +0200 Subject: [PATCH 7/9] =?UTF-8?q?feat(hud):=20fam=C3=ADlies=20de=20color=20p?= =?UTF-8?q?er=20bloc=20+=20ombra=20del=20text?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/config/ui.yaml | 22 +++++++++++-- source/core/ui/ui_config.cpp | 28 +++++++++++++--- source/core/ui/ui_config.hpp | 26 ++++++++++++--- source/game/editor/editor.cpp | 6 ++-- source/game/ui/hud.cpp | 60 +++++++++++++++++++++++++++-------- source/utils/defaults.hpp | 22 +++++++++---- 6 files changed, 131 insertions(+), 33 deletions(-) diff --git a/data/config/ui.yaml b/data/config/ui.yaml index d5875a7..13ecc13 100644 --- a/data/config/ui.yaml +++ b/data/config/ui.yaml @@ -17,9 +17,7 @@ colors: menu_cursor: 71 menu_disabled: 16 hud_bg: 9 - hud_label: 58 - hud_value: 187 - hud_flash: 237 + hud_flash: 63 # Rètol de transició de sala (ROOM_INTRO i ROOM_OUTRO). Independents # de notification_* perquè la fase i les notificacions són dos canals # visuals distints: ací pots canviar el color del rètol sense tocar @@ -74,6 +72,24 @@ hud: flash_ms: 250 # durada del flash quan un jugador rep un hit shake_ms: 300 # durada del shake que acompanya el flash +# Famílies de color del HUD per bloc. Cada bloc té `label` (to apagat +# per etiquetes), `value` (to viu per a la xifra) i `shadow` (to fosc +# del mateix matís — efecte embossing 1 px a baix-dreta). Si manca un +# camp, cau al default compilat a `Defaults::UI`. El `colors.hud_flash` +# és comú a totes tres famílies. +hud_p1: + label: 7 # vermell pur + value: 183 # crema-préssec + shadow: 2 # vermell fosc +hud_center: + label: 29 # ambre cremat + value: 55 # or brillant + shadow: 10 # marró cremat +hud_p2: + label: 248 # cian pur + value: 253 # blau pàl·lid + shadow: 64 # blau marí + # Geometria del popup superior (Notifier). En píxels del canvas, llevat de # slide_ms (durada en ms de l'animació d'entrada i d'eixida; constant # independentment de la mida de la caixa). El padding vertical és asimètric a diff --git a/source/core/ui/ui_config.cpp b/source/core/ui/ui_config.cpp index e2ed476..5d55ace 100644 --- a/source/core/ui/ui_config.cpp +++ b/source/core/ui/ui_config.cpp @@ -82,8 +82,15 @@ UiConfig::UiConfig() menu_cursor_(Defaults::UI::MENU_CURSOR), menu_disabled_(Defaults::UI::MENU_DISABLED), hud_bg_(Defaults::UI::HUD_BG), - hud_label_(Defaults::UI::HUD_LABEL), - hud_value_(Defaults::UI::HUD_VALUE), + hud_p1_label_(Defaults::UI::HUD_P1_LABEL), + hud_p1_value_(Defaults::UI::HUD_P1_VALUE), + hud_p1_shadow_(Defaults::UI::HUD_P1_SHADOW), + hud_center_label_(Defaults::UI::HUD_CENTER_LABEL), + hud_center_value_(Defaults::UI::HUD_CENTER_VALUE), + hud_center_shadow_(Defaults::UI::HUD_CENTER_SHADOW), + hud_p2_label_(Defaults::UI::HUD_P2_LABEL), + hud_p2_value_(Defaults::UI::HUD_P2_VALUE), + hud_p2_shadow_(Defaults::UI::HUD_P2_SHADOW), hud_flash_(Defaults::UI::HUD_FLASH), room_text_(Defaults::UI::ROOM_TEXT), room_text_outline_(Defaults::UI::ROOM_TEXT_OUTLINE), @@ -218,13 +225,26 @@ void UiConfig::load(const std::string& file_path) { readColorIndex(c, "menu_cursor", menu_cursor_); readColorIndex(c, "menu_disabled", menu_disabled_); readColorIndex(c, "hud_bg", hud_bg_); - readColorIndex(c, "hud_label", hud_label_); - readColorIndex(c, "hud_value", hud_value_); readColorIndex(c, "hud_flash", hud_flash_); readColorIndex(c, "room_text", room_text_); readColorIndex(c, "room_text_outline", room_text_outline_); } + // Famílies de color del HUD: blocs `hud_p1`, `hud_center`, + // `hud_p2` amb claus `label`, `value`, `shadow`. Cada bloc i + // cada clau són opcionals — el que manqui cau al default + // compilat a `Defaults::UI`. + auto read_hud_family = [&](const std::string& key, Uint8& label, Uint8& value, Uint8& shadow) { + if (!yaml.contains(key)) { return; } + const auto& f = yaml[key]; + readColorIndex(f, "label", label); + readColorIndex(f, "value", value); + readColorIndex(f, "shadow", shadow); + }; + read_hud_family("hud_p1", hud_p1_label_, hud_p1_value_, hud_p1_shadow_); + read_hud_family("hud_center", hud_center_label_, hud_center_value_, hud_center_shadow_); + read_hud_family("hud_p2", hud_p2_label_, hud_p2_value_, hud_p2_shadow_); + if (yaml.contains("timings")) { const auto& t = yaml["timings"]; readField(t, "notification_ms", notification_ms_); diff --git a/source/core/ui/ui_config.hpp b/source/core/ui/ui_config.hpp index a6e78b8..1cb687b 100644 --- a/source/core/ui/ui_config.hpp +++ b/source/core/ui/ui_config.hpp @@ -66,8 +66,19 @@ class UiConfig { [[nodiscard]] auto menuCursor() const -> Uint8 { return menu_cursor_; } [[nodiscard]] auto menuDisabled() const -> Uint8 { return menu_disabled_; } [[nodiscard]] auto hudBg() const -> Uint8 { return hud_bg_; } - [[nodiscard]] auto hudLabel() const -> Uint8 { return hud_label_; } - [[nodiscard]] auto hudValue() const -> Uint8 { return hud_value_; } + // Famílies de color del HUD per bloc (LEFT/CENTER/RIGHT). Cada + // família té label (etiqueta apagada), value (valor destacat) i + // shadow (to fosc per a la sombra-embossing). El flash és comú a + // les tres famílies (groc neó al guanyar punts). + [[nodiscard]] auto hudP1Label() const -> Uint8 { return hud_p1_label_; } + [[nodiscard]] auto hudP1Value() const -> Uint8 { return hud_p1_value_; } + [[nodiscard]] auto hudP1Shadow() const -> Uint8 { return hud_p1_shadow_; } + [[nodiscard]] auto hudCenterLabel() const -> Uint8 { return hud_center_label_; } + [[nodiscard]] auto hudCenterValue() const -> Uint8 { return hud_center_value_; } + [[nodiscard]] auto hudCenterShadow() const -> Uint8 { return hud_center_shadow_; } + [[nodiscard]] auto hudP2Label() const -> Uint8 { return hud_p2_label_; } + [[nodiscard]] auto hudP2Value() const -> Uint8 { return hud_p2_value_; } + [[nodiscard]] auto hudP2Shadow() const -> Uint8 { return hud_p2_shadow_; } [[nodiscard]] auto hudFlash() const -> Uint8 { return hud_flash_; } [[nodiscard]] auto roomText() const -> Uint8 { return room_text_; } [[nodiscard]] auto roomTextOutline() const -> Uint8 { return room_text_outline_; } @@ -209,8 +220,15 @@ class UiConfig { Uint8 menu_cursor_; Uint8 menu_disabled_; Uint8 hud_bg_; - Uint8 hud_label_; - Uint8 hud_value_; + Uint8 hud_p1_label_; + Uint8 hud_p1_value_; + Uint8 hud_p1_shadow_; + Uint8 hud_center_label_; + Uint8 hud_center_value_; + Uint8 hud_center_shadow_; + Uint8 hud_p2_label_; + Uint8 hud_p2_value_; + Uint8 hud_p2_shadow_; Uint8 hud_flash_; Uint8 room_text_; Uint8 room_text_outline_; diff --git a/source/game/editor/editor.cpp b/source/game/editor/editor.cpp index a5adaac..9d2155c 100644 --- a/source/game/editor/editor.cpp +++ b/source/game/editor/editor.cpp @@ -739,8 +739,10 @@ void Editor::renderEditorHud(const EntityManager& entities) const { ? "(" + std::to_string(cursor_col_) + "," + std::to_string(cursor_row_) + ")" : "(--,--)"; - const auto LBL = UiConfig::get().hudLabel(); - const auto VAL = UiConfig::get().hudValue(); + // El HUD ara té tres famílies (P1/CENTER/P2); l'editor n'agafa la + // del CENTER (ambre/or) per ser neutra i contrastar amb el mapa. + const auto LBL = UiConfig::get().hudCenterLabel(); + const auto VAL = UiConfig::get().hudCenterValue(); const auto FLASH = UiConfig::get().hudFlash(); const int KERN = UiConfig::get().hudFont().kerning; // Mateixos Y que el HUD del joc per simetria visual: línia 1 = 4, diff --git a/source/game/ui/hud.cpp b/source/game/ui/hud.cpp index 455858c..cf9a286 100644 --- a/source/game/ui/hud.cpp +++ b/source/game/ui/hud.cpp @@ -40,6 +40,25 @@ namespace { // Separació extra entre camps dins d'una mateixa línia. constexpr int FIELD_GAP = 6; // px entre "Vides 3" i "Tres. 00" + // Desplaçament de l'ombra del text en píxels (sota-dreta). Petit + // perquè la font del HUD és 8 px d'alçada — qualsevol valor més + // gran tapa el següent caràcter. + constexpr int SHADOW_DX = 1; + constexpr int SHADOW_DY = 1; + + // Helpers per pintar text amb ombra. Primer la sombra desplaçada, + // després el text principal al damunt — l'ordre garanteix que la + // sombra mai cobreix el text. El kerning queda al default del + // Text (1 px), igual que la resta del HUD. + void drawShadowed(Text& font, int x, int y, const std::string& s, Uint8 color, Uint8 shadow) { + font.writeColored(x + SHADOW_DX, y + SHADOW_DY, s, shadow); + font.writeColored(x, y, s, color); + } + void drawMonoShadowed(Text& font, int x, int y, const std::string& s, Uint8 color, Uint8 shadow, int cell_w) { + font.writeMonoDigits(x + SHADOW_DX, y + SHADOW_DY, s, shadow, cell_w); + font.writeMonoDigits(x, y, s, color, cell_w); + } + // Format zero-padded a 6 dígits per a la puntuació. auto formatScore(int v) -> std::string { const int CLAMPED = std::clamp(v, 0, 999999); @@ -261,6 +280,16 @@ void Hud::renderBlock(BlockId id) const { void Hud::renderIdleSide(int x, int y, int w, const Block& blk, int player_index, const std::string& label) const { const auto& p = players_[static_cast(player_index)]; + // Família de color del bloc: P1 (vermell-crema-vermell-fosc) per al + // jugador 0, P2 (cian-blau-blau-marí) per al jugador 1. Mantenir el + // mateix matís a label/value/shadow dóna jerarquia visual coherent + // entre línies sense empastar (la sombra és un to fosc del mateix + // matís → efecte embossing). + const auto& ui = UiConfig::get(); + const Uint8 LBL_C = (player_index == 0) ? ui.hudP1Label() : ui.hudP2Label(); + const Uint8 VAL_C = (player_index == 0) ? ui.hudP1Value() : ui.hudP2Value(); + const Uint8 SHD_C = (player_index == 0) ? ui.hudP1Shadow() : ui.hudP2Shadow(); + // Slot inactiu amb prompt actiu: substituïm el render de zeros pel // missatge "PULSA START / PARA JUGAR" o "ESPERA / PARA JUGAR" segons // el mode fixat per la GameScene cada frame. El render de zeros @@ -275,12 +304,12 @@ void Hud::renderIdleSide(int x, int y, int w, const Block& blk, int player_index const int L2_W = font_->length(L2); const int X1 = x + ((w - L1_W) / 2); const int X2 = x + ((w - L2_W) / 2); - font_->writeColored(X1, y + LINE1_Y, L1, UiConfig::get().hudLabel()); - font_->writeColored(X2, y + LINE2_Y, L2, UiConfig::get().hudValue()); + drawShadowed(*font_, X1, y + LINE1_Y, L1, LBL_C, SHD_C); + drawShadowed(*font_, X2, y + LINE2_Y, L2, VAL_C, SHD_C); return; } - const Uint8 SCORE_C = (blk.flash_ms_left > 0) ? UiConfig::get().hudFlash() : UiConfig::get().hudValue(); + const Uint8 SCORE_C = (blk.flash_ms_left > 0) ? ui.hudFlash() : VAL_C; // --- Línia 1: "