feat(anim): cardinal WEST i flip totalment governat pel motor d'animació

This commit is contained in:
JailDesigner committed 2026-04-29 10:11:27 +02:00
1 parent 9dc7ff0da3
commit 72384c3113
15 files changed
+183 -182

No files matched your search

@@ -34,6 +34,13 @@ class AnimatedSprite : public MovingSprite {
// Dades d'una animació concreta dins d'un spritesheet. Les claus del
// mapa (`animations_`) són els noms; aquí només es guarden els fotogrames
// i l'estat de reproducció.
//
// El flip és sempre propietat del motor: a cada `animate()` s'escriu el
// flip del frame actual al sprite (default `SDL_FLIP_NONE` quan el YAML
// no declara res). El codi del joc no pot — ni ha de — tocar el flip
// manualment; ho expressa al YAML declarant `flip_h: true` a l'animació
// simètrica (p. ex. `walk_west`) o, per a casos puntuals, per frame
// amb la forma mapping `{ index, flip_h?, flip_v? }`.
struct AnimationData {
std::vector<Frame> frames;
// Durada de cada frame en segons (convertit des de `frame_ms` al YAML).
@@ -44,13 +51,6 @@ class AnimatedSprite : public MovingSprite {
// 0 = loop complet des del primer frame.
// N>0 = rebota al frame N en passar del final.
int loop_from{0};
// Si true, `animate()` escriu el flip del frame actual al sprite.
// Si false (cas backward-compat per a animacions sense cap declaració
// de flip), `animate()` no toca el flip — el codi del joc el segueix
// controlant externament via `setFlip(...)`. Es marca a true quan
// l'animació declara `flip_h`/`flip_v`, o quan algun frame es declara
// amb la forma mapping `{ index, flip_h?, flip_v? }`.
bool controls_flip{false};
bool completed{false};
int current_frame{0};
float accumulated_time{0.0F};