feat(mummy): evita forats per detecció reactiva al canvi de tile
This commit is contained in:
1 parent
1ccd444aad
commit
6d4f606eeb
3 files changed
+176
-46
No files matched your search
@@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <climits>
|
||||
#include <cstdint>
|
||||
#include <optional>
|
||||
#include <vector>
|
||||
@@ -143,6 +144,16 @@ class Mummy : public DynamicHazard {
|
||||
// totes ho estan, retorna `NONE` (la mòmia queda quieta en HURT).
|
||||
[[nodiscard]] auto chooseHurtDirection(Direction preferred) const -> Direction;
|
||||
|
||||
// Detecció reactiva al canvi de tile (substitueix el lookahead sub-tile
|
||||
// entre creuaments). Es crida al principi de cada `step()`. Si el tile
|
||||
// que ocupa la mòmia (calculat des del centre de la BOX) ha canviat
|
||||
// respecte a l'última crida, comprova si el tile nou conté un decal
|
||||
// trigger; si el conté, dispara mitja volta immediata. La primera crida
|
||||
// (last_tile_col_ == INT_MIN) només registra el tile actual sense
|
||||
// reaccionar — evita un falç positiu si la mòmia spawneja sobre un
|
||||
// decal o si el setup encara no és estable.
|
||||
void reactToCurrentTile();
|
||||
|
||||
// Animacions carregades del YAML, una per cada cardinal. La variant
|
||||
// `walk_west` reaprofita els frames de l'est però amb `flip_h: true`
|
||||
// declarat al YAML — el motor d'animació aplica el flip al sprite
|
||||
@@ -166,4 +177,12 @@ class Mummy : public DynamicHazard {
|
||||
// bloc `stats.kills_outright` del YAML; default true per coherència
|
||||
// amb el comportament d'Oh Mummy! (les mòmies maten).
|
||||
bool kills_outright_{true};
|
||||
|
||||
// Tile que ocupava la mòmia a l'última crida a `reactToCurrentTile`.
|
||||
// Inicialitzats a `INT_MIN` perquè la primera crida (lazy init: no
|
||||
// podem fer-ho al constructor perquè `pixel_rect_` encara no té
|
||||
// posició; setPixelRect del manager arriba després) registra el tile
|
||||
// de spawn sense reaccionar.
|
||||
int last_tile_col_{INT_MIN};
|
||||
int last_tile_row_{INT_MIN};
|
||||
};
|
||||
Reference in new issue
Block a user