#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