30 lines
1.1 KiB
C++
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
|