feat: añadir cambio de dirección de gravedad en modo LOGO
El modo LOGO ahora incluye cambios automáticos de dirección de gravedad como parte de sus variaciones, aumentando la diversidad visual de la demostración. Cambios: - Nueva acción en modo LOGO (PHYSICS): cambiar dirección gravedad (16%) - Rebalanceo de probabilidades existentes: • PHYSICS → SHAPE: 60% → 50% • Gravedad ON: 20% → 18% • Gravedad OFF: 20% → 16% • Dirección gravedad: nuevo 16% - Al cambiar dirección, se fuerza gravedad ON para visibilidad Antes el modo LOGO solo alternaba entre figura/física y gravedad on/off, pero nunca cambiaba la dirección. Ahora tiene las mismas capacidades de variación que los modos DEMO y DEMO_LITE. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1140,20 +1140,26 @@ void Engine::performLogoAction(bool logo_waiting_for_flip) {
|
||||
demo_next_action_time_ = logo_min_time_ + (rand() % 1000) / 1000.0f * interval_range;
|
||||
}
|
||||
} else {
|
||||
// Logo animado (PHYSICS) → 3 opciones posibles
|
||||
if (action < 60) {
|
||||
// 60%: PHYSICS → SHAPE (reconstruir logo y ver rotaciones)
|
||||
// Logo animado (PHYSICS) → 4 opciones posibles
|
||||
if (action < 50) {
|
||||
// 50%: PHYSICS → SHAPE (reconstruir logo y ver rotaciones)
|
||||
toggleShapeModeInternal(false);
|
||||
|
||||
// Resetear variables de espera de flips al volver a SHAPE
|
||||
logo_waiting_for_flip_ = false;
|
||||
logo_current_flip_count_ = 0;
|
||||
} else if (action < 80) {
|
||||
// 20%: Forzar gravedad ON (empezar a caer mientras da vueltas)
|
||||
} else if (action < 68) {
|
||||
// 18%: Forzar gravedad ON (empezar a caer mientras da vueltas)
|
||||
scene_manager_->forceBallsGravityOn();
|
||||
} else {
|
||||
// 20%: Forzar gravedad OFF (flotar mientras da vueltas)
|
||||
} else if (action < 84) {
|
||||
// 16%: Forzar gravedad OFF (flotar mientras da vueltas)
|
||||
scene_manager_->forceBallsGravityOff();
|
||||
} else {
|
||||
// 16%: Cambiar dirección de gravedad (nueva variación)
|
||||
GravityDirection new_direction = static_cast<GravityDirection>(rand() % 4);
|
||||
scene_manager_->changeGravityDirection(new_direction);
|
||||
// Si la gravedad está OFF, activarla para que el cambio sea visible
|
||||
scene_manager_->forceBallsGravityOn();
|
||||
}
|
||||
|
||||
// Resetear timer con intervalos escalados
|
||||
|
||||
@@ -119,6 +119,11 @@ class StateManager {
|
||||
*/
|
||||
float getLogoPreviousShapeScale() const { return logo_previous_shape_scale_; }
|
||||
|
||||
/**
|
||||
* @brief Obtiene si LOGO fue activado manualmente (tecla K) o automáticamente (desde DEMO)
|
||||
*/
|
||||
bool getLogoEnteredManually() const { return logo_entered_manually_; }
|
||||
|
||||
/**
|
||||
* @brief Establece valores previos de LOGO (llamado por Engine antes de entrar)
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user