Files

30 lines
1.1 KiB
C++

// 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 <cstddef>
#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