feat(enemy): els enemics poden disparar bales via tick d'IA

This commit is contained in:
2026-05-25 20:05:01 +02:00
parent 5ad433e63a
commit 14295ce859
18 changed files with 361 additions and 92 deletions
+7
View File
@@ -6,6 +6,7 @@
#include <array>
#include <cstdint>
#include <vector>
#include "core/entities/entity.hpp"
#include "core/types.hpp"
@@ -81,6 +82,7 @@ class Enemy : public Entities::Entity {
// Accessors per al sistema d'IA (Systems::EnemyAi).
[[nodiscard]] auto getAiState() -> EnemyAiState& { return ai_state_; }
[[nodiscard]] auto getAiTickTimers() -> std::vector<float>& { return ai_tick_timers_; }
[[nodiscard]] auto getRotationBase() const -> float { return animation_.rotation_delta_base; }
void setRotationDelta(float rot) { rotation_delta_ = rot; }
// Public: el sistema d'IA reorienta la velocitat des d'un angle.
@@ -136,6 +138,11 @@ class Enemy : public Entities::Entity {
// Estat per-instància que la primitiva de moviment manté entre frames.
EnemyAiState ai_state_;
// Timers paral·lels a config_->ai.tick: timers_[i] és el temps restant
// (en segons) fins a la pròxima execució de l'acció i. Re-dimensionat a
// init() segons la mida de config_->ai.tick.
std::vector<float> ai_tick_timers_;
// Referències als 2 ships per a AI de tracking/proximity/chase/flee.
std::array<const Ship*, 2> ships_{nullptr, nullptr};