#pragma once #include #include #include "external/fkyaml_node.hpp" #include "game/entities/hazard.hpp" // Mòmia: perill dinàmic que deambula pels passadís. A cada intersecció // tria una direcció vàlida; l'algoritme per triar-la és un hook virtual // (`chooseDirection`) que la base implementa com a aleatori uniforme // sobre les direccions admissibles. Futurs derivats poden sesgar cap al // jugador sense tocar la lògica de moviment. // // Andamiatge: el concepte d'"intersecció" i la validació de direcció // requereixen conèixer el mapa. De moment l'exposem com un conjunt de // direccions admissibles que l'EntityManager injecta; la implementació // real arribarà quan cablegem l'entitat al game loop. class Mummy : public DynamicHazard { public: enum class Direction : std::uint8_t { NONE, UP, DOWN, LEFT, RIGHT }; explicit Mummy(const fkyaml::node& yaml); // Hook d'IA. Donat un conjunt de direccions admissibles, decideix la // següent direcció a prendre. La implementació de la base tria una // aleatoria; si `allowed` està buit, retorna `NONE`. virtual auto chooseDirection(const std::vector& allowed) -> Direction; // Contacte amb el jugador: publica `player_hit` amb el dany. void onPlayerContact(Player* player) override; };