millorat el spawn d'enemics: perimetre de seguretat i animació amb invulnerabilitat

This commit is contained in:
2025-12-09 10:21:42 +01:00
parent ec6565bf71
commit 217ca58b1a
9 changed files with 157 additions and 21 deletions

View File

@@ -40,7 +40,7 @@ class Enemic {
: renderer_(nullptr) {}
Enemic(SDL_Renderer* renderer);
void inicialitzar(TipusEnemic tipus = TipusEnemic::PENTAGON);
void inicialitzar(TipusEnemic tipus = TipusEnemic::PENTAGON, const Punt* ship_pos = nullptr);
void actualitzar(float delta_time);
void dibuixar() const;
@@ -70,6 +70,10 @@ class Enemic {
void set_rotation(float rot) { drotacio_ = rot; animacio_.drotacio_base = rot; }
void set_tracking_strength(float strength);
// [NEW] Invulnerability queries
bool es_invulnerable() const { return timer_invulnerabilitat_ > 0.0f; }
float get_temps_invulnerabilitat() const { return timer_invulnerabilitat_; }
private:
SDL_Renderer* renderer_;
@@ -96,6 +100,9 @@ class Enemic {
const Punt* ship_position_; // Pointer to ship position (for tracking)
float tracking_strength_; // For Quadrat: tracking intensity (0.0-1.5), default 0.5
// [NEW] Invulnerability state
float timer_invulnerabilitat_; // Countdown timer (seconds), 0.0f = vulnerable
// [EXISTING] Private methods
void mou(float delta_time);
@@ -107,4 +114,5 @@ class Enemic {
void comportament_quadrat(float delta_time);
void comportament_molinillo(float delta_time);
float calcular_escala_actual() const; // Returns scale with palpitation applied
bool intent_spawn_safe(const Punt& ship_pos, float& out_x, float& out_y);
};