Fix: Sistema de convergencia y flip timing en LOGO mode
Refactoring semántico: - Renombrar rotoball_* → shape_* (variables y métodos) - Mejora legibilidad: aplica a todas las figuras 3D, no solo esfera Fixes críticos: - Fix convergencia: setShapeTarget2D() actualiza targets cada frame - Fix getDistanceToTarget(): siempre calcula distancia (sin guarda) - Fix lógica flip: destruir DURANTE flip N (no después de N flips) - Añadir display CONV en debug HUD (monitoreo convergencia) Mejoras timing: - Reducir PNG_IDLE_TIME_LOGO: 3-5s → 2-4s (flips más dinámicos) - Bajar CONVERGENCE_THRESHOLD: 0.8 → 0.4 (40% permite flips) Sistema flip-waiting (LOGO mode): - CAMINO A: Convergencia + tiempo (inmediato) - CAMINO B: Esperar 1-3 flips y destruir durante flip (20-80% progreso) - Tracking de flips con getFlipCount() y getFlipProgress() 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -43,6 +43,14 @@ private:
|
||||
// Modo LOGO (intervalos de flip más largos)
|
||||
bool is_logo_mode_ = false; // true = usar intervalos LOGO (más lentos)
|
||||
|
||||
// Sistema de convergencia (solo relevante en modo LOGO)
|
||||
float current_convergence_ = 0.0f; // Porcentaje actual de convergencia (0.0-1.0)
|
||||
bool convergence_threshold_reached_ = false; // true si ha alcanzado umbral mínimo (80%)
|
||||
|
||||
// Sistema de tracking de flips (para modo LOGO - espera de flips)
|
||||
int flip_count_ = 0; // Contador de flips completados (reset al entrar a LOGO)
|
||||
bool was_flipping_last_frame_ = false; // Estado previo para detectar transiciones
|
||||
|
||||
// Dimensiones normalizadas
|
||||
float scale_factor_ = 1.0f;
|
||||
float center_offset_x_ = 0.0f;
|
||||
@@ -70,6 +78,18 @@ public:
|
||||
const char* getName() const override { return "PNG SHAPE"; }
|
||||
float getScaleFactor(float screen_height) const override;
|
||||
|
||||
// Consultar estado de flip
|
||||
bool isFlipping() const { return is_flipping_; }
|
||||
|
||||
// Obtener progreso del flip actual (0.0 = inicio, 1.0 = fin)
|
||||
float getFlipProgress() const;
|
||||
|
||||
// Obtener número de flips completados (para modo LOGO)
|
||||
int getFlipCount() const { return flip_count_; }
|
||||
|
||||
// Resetear contador de flips (llamar al entrar a LOGO MODE)
|
||||
void resetFlipCount() { flip_count_ = 0; was_flipping_last_frame_ = false; }
|
||||
|
||||
// Control de modo LOGO (flip intervals más largos)
|
||||
void setLogoMode(bool enable) {
|
||||
is_logo_mode_ = enable;
|
||||
@@ -78,4 +98,7 @@ public:
|
||||
float idle_max = enable ? PNG_IDLE_TIME_MAX_LOGO : PNG_IDLE_TIME_MAX;
|
||||
next_idle_time_ = idle_min + (rand() % 1000) / 1000.0f * (idle_max - idle_min);
|
||||
}
|
||||
|
||||
// Sistema de convergencia (override de Shape::setConvergence)
|
||||
void setConvergence(float convergence) override;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user