afegida progresió

This commit is contained in:
2025-12-03 22:19:44 +01:00
parent a3aeed4b7c
commit 1023cde1be
14 changed files with 1109 additions and 58 deletions

View File

@@ -24,7 +24,8 @@ Enemic::Enemic(SDL_Renderer* renderer)
brightness_(Defaults::Brightness::ENEMIC),
tipus_(TipusEnemic::PENTAGON),
tracking_timer_(0.0f),
ship_position_(nullptr) {
ship_position_(nullptr),
tracking_strength_(0.5f) { // Default tracking strength
// [NUEVO] Forma es carrega a inicialitzar() segons el tipus
// Constructor no carrega forma per permetre tipus diferents
}
@@ -201,8 +202,8 @@ void Enemic::comportament_quadrat(float delta_time) {
while (angle_diff > Constants::PI) angle_diff -= 2.0f * Constants::PI;
while (angle_diff < -Constants::PI) angle_diff += 2.0f * Constants::PI;
// Apply tracking strength
angle_ += angle_diff * Defaults::Enemies::Quadrat::TRACKING_STRENGTH;
// Apply tracking strength (uses member variable, defaults to 0.5)
angle_ += angle_diff * tracking_strength_;
}
}
@@ -394,3 +395,29 @@ float Enemic::calcular_escala_actual() const {
return escala;
}
// [NEW] Stage system API implementations
float Enemic::get_base_velocity() const {
switch (tipus_) {
case TipusEnemic::PENTAGON:
return Defaults::Enemies::Pentagon::VELOCITAT;
case TipusEnemic::QUADRAT:
return Defaults::Enemies::Quadrat::VELOCITAT;
case TipusEnemic::MOLINILLO:
return Defaults::Enemies::Molinillo::VELOCITAT;
}
return 0.0f;
}
float Enemic::get_base_rotation() const {
// Return the base rotation speed (drotacio_base if available, otherwise current drotacio_)
return animacio_.drotacio_base != 0.0f ? animacio_.drotacio_base : drotacio_;
}
void Enemic::set_tracking_strength(float strength) {
// Only applies to QUADRAT type
if (tipus_ == TipusEnemic::QUADRAT) {
tracking_strength_ = strength;
}
}