millorat el spawn d'enemics: perimetre de seguretat i animació amb invulnerabilitat
This commit is contained in:
@@ -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);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user