Fix: Mejoras de UX en modo boids (auto-exit + screen size)
Implementadas 2 mejoras críticas para modo boids: **1. Auto-exit de boids al activar gravedad (G/cursores):** - handleGravityToggle(): Sale a PHYSICS si está en BOIDS - handleGravityDirectionChange(): Sale a PHYSICS y aplica dirección - Razón: La gravedad es conceptualmente incompatible con boids - UX esperada: Usuario pulsa G → vuelve automáticamente a física **2. Update screen size en F4 (real fullscreen):** - toggleRealFullscreen() ahora llama a boid_manager_->updateScreenSize() - Corrige bug: Boids no respetaban nuevas dimensiones tras F4 - Wrapping boundaries ahora se actualizan correctamente Cambios: - engine.cpp: Añadida comprobación de BOIDS en métodos de gravedad - engine.cpp: Actualización de boid_manager en F4 (línea 420) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -340,6 +340,12 @@ void Engine::update() {
|
|||||||
|
|
||||||
// Gravedad y física
|
// Gravedad y física
|
||||||
void Engine::handleGravityToggle() {
|
void Engine::handleGravityToggle() {
|
||||||
|
// Si estamos en modo boids, salir a modo física primero
|
||||||
|
if (current_mode_ == SimulationMode::BOIDS) {
|
||||||
|
toggleBoidsMode(); // Esto cambia a PHYSICS y activa gravedad
|
||||||
|
return; // La notificación ya se muestra en toggleBoidsMode
|
||||||
|
}
|
||||||
|
|
||||||
// Si estamos en modo figura, salir a modo física SIN GRAVEDAD
|
// Si estamos en modo figura, salir a modo física SIN GRAVEDAD
|
||||||
if (current_mode_ == SimulationMode::SHAPE) {
|
if (current_mode_ == SimulationMode::SHAPE) {
|
||||||
toggleShapeModeInternal(false); // Desactivar figura sin forzar gravedad ON
|
toggleShapeModeInternal(false); // Desactivar figura sin forzar gravedad ON
|
||||||
@@ -354,6 +360,12 @@ void Engine::handleGravityToggle() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Engine::handleGravityDirectionChange(GravityDirection direction, const char* notification_text) {
|
void Engine::handleGravityDirectionChange(GravityDirection direction, const char* notification_text) {
|
||||||
|
// Si estamos en modo boids, salir a modo física primero
|
||||||
|
if (current_mode_ == SimulationMode::BOIDS) {
|
||||||
|
toggleBoidsMode(); // Esto cambia a PHYSICS y activa gravedad
|
||||||
|
// Continuar para aplicar la dirección de gravedad
|
||||||
|
}
|
||||||
|
|
||||||
// Si estamos en modo figura, salir a modo física CON gravedad
|
// Si estamos en modo figura, salir a modo física CON gravedad
|
||||||
if (current_mode_ == SimulationMode::SHAPE) {
|
if (current_mode_ == SimulationMode::SHAPE) {
|
||||||
toggleShapeModeInternal(); // Desactivar figura (activa gravedad automáticamente)
|
toggleShapeModeInternal(); // Desactivar figura (activa gravedad automáticamente)
|
||||||
@@ -754,6 +766,9 @@ void Engine::toggleRealFullscreen() {
|
|||||||
// Reinicar la escena con nueva resolución
|
// Reinicar la escena con nueva resolución
|
||||||
scene_manager_->updateScreenSize(current_screen_width_, current_screen_height_);
|
scene_manager_->updateScreenSize(current_screen_width_, current_screen_height_);
|
||||||
scene_manager_->changeScenario(scene_manager_->getCurrentScenario());
|
scene_manager_->changeScenario(scene_manager_->getCurrentScenario());
|
||||||
|
|
||||||
|
// Actualizar tamaño de pantalla para boids (wrapping boundaries)
|
||||||
|
boid_manager_->updateScreenSize(current_screen_width_, current_screen_height_);
|
||||||
}
|
}
|
||||||
SDL_free(displays);
|
SDL_free(displays);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user