// enemy_ai_system.hpp - Executa la IA d'un enemic (moviment + accions tick) // © 2026 JailDesigner // // Llegeix `enemy.getConfig().ai` i aplica la primitiva de moviment activa i, // opcionalment, les accions periòdiques declarades (tick). Reemplaça el switch // per type hardcoded de l'antic Enemy::update. #pragma once #include #include "game/systems/collision_system.hpp" class Enemy; namespace Systems::EnemyAi { // Aplica només la primitiva de moviment activa de l'enemic (sense disparar // ni cap altra acció tick). S'usa als steps secundaris (continue/gameover/ // death) on els enemics han de continuar movent-se de fons però no actuar. void move(Enemy& enemy, float delta_time); // Aplica moviment + accions periòdiques (SHOOT, etc.). enemy_index és // l'índex de l'enemic dins ctx.enemies; s'usa per construir el seu // owner_id de bala (ENEMY_OWNER_BASE + index), de manera que el sistema // de col·lisions pugui filtrar el self-shot. void tick(Collision::Context& ctx, Enemy& enemy, std::size_t enemy_index, float delta_time); } // namespace Systems::EnemyAi