From f3b029c5b67e1e590157821662e77e75b2c5e968 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Fri, 20 Mar 2026 18:21:28 +0100 Subject: [PATCH] refactor: normalizar notificaciones a castellano, title case sin dos puntos MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Todo en castellano (Vinyeta→viñeta, Cromàtica→cromática, Complet→completo, Desactivat→desactivado, Boids→boids) - Primera letra mayúscula, resto minúscula (MODO SANDBOX→Modo sandbox, etc.) - Sin dos puntos separador (PostFX: X→PostFX X, Escalado: X→Escalado X, Sprite: X→Textura X) - Separadores de miles en castellano (1,000→1.000 pelotas) - Nombres de figura en minúscula via tolower (SPHERE→sphere → "Modo sphere") - Ajuste valores PostFX por defecto (vignette 1.5→0.8, chroma 1.0→0.2) Co-Authored-By: Claude Sonnet 4.6 --- source/boids_mgr/boid_manager.cpp | 4 +-- source/defines.hpp | 2 +- source/engine.cpp | 50 ++++++++++++++--------------- source/gpu/gpu_pipeline.hpp | 4 +-- source/input/input_handler.cpp | 26 +++++++-------- source/shapes_mgr/shape_manager.cpp | 11 ++++--- 6 files changed, 50 insertions(+), 47 deletions(-) diff --git a/source/boids_mgr/boid_manager.cpp b/source/boids_mgr/boid_manager.cpp index a1711ee..35450fc 100644 --- a/source/boids_mgr/boid_manager.cpp +++ b/source/boids_mgr/boid_manager.cpp @@ -77,7 +77,7 @@ void BoidManager::activateBoids() { // Mostrar notificación (solo si NO estamos en modo demo o logo) if (state_mgr_ && ui_mgr_ && state_mgr_->getCurrentMode() == AppMode::SANDBOX) { - ui_mgr_->showNotification("Modo Boids"); + ui_mgr_->showNotification("Modo boids"); } } @@ -93,7 +93,7 @@ void BoidManager::deactivateBoids(bool force_gravity_on) { // Mostrar notificación (solo si NO estamos en modo demo o logo) if (state_mgr_ && ui_mgr_ && state_mgr_->getCurrentMode() == AppMode::SANDBOX) { - ui_mgr_->showNotification("Modo Física"); + ui_mgr_->showNotification("Modo física"); } } diff --git a/source/defines.hpp b/source/defines.hpp index a0809cb..9ddf9ce 100644 --- a/source/defines.hpp +++ b/source/defines.hpp @@ -32,7 +32,7 @@ constexpr Uint64 NOTIFICATION_FADE_TIME = 200; // Duración animación salida constexpr float NOTIFICATION_BG_ALPHA = 0.7f; // Opacidad fondo semitransparente (0.0-1.0) constexpr int NOTIFICATION_PADDING = 10; // Padding interno del fondo (píxeles físicos) constexpr int NOTIFICATION_TOP_MARGIN = 20; // Margen superior desde borde pantalla (píxeles físicos) -constexpr char KIOSK_NOTIFICATION_TEXT[] = "MODO KIOSKO"; +constexpr char KIOSK_NOTIFICATION_TEXT[] = "Modo kiosko"; // Configuración de pérdida aleatoria en rebotes constexpr float BASE_BOUNCE_COEFFICIENT = 0.75f; // Coeficiente base IGUAL para todas las pelotas diff --git a/source/engine.cpp b/source/engine.cpp index b3222ea..442f6cd 100644 --- a/source/engine.cpp +++ b/source/engine.cpp @@ -472,20 +472,20 @@ void Engine::handleGravityToggle() { toggleBoidsMode(false); // Cambiar a PHYSICS sin activar gravedad (preserva inercia) // NO llamar a forceBallsGravityOff() porque aplica impulsos que destruyen la inercia de BOIDS // La gravedad ya está desactivada por BoidManager::activateBoids() y se mantiene al salir - showNotificationForAction("Modo Física - Gravedad Off"); + showNotificationForAction("Modo física, gravedad off"); return; } // Si estamos en modo figura, salir a modo física SIN GRAVEDAD if (current_mode_ == SimulationMode::SHAPE) { toggleShapeModeInternal(false); // Desactivar figura sin forzar gravedad ON - showNotificationForAction("Gravedad Off"); + showNotificationForAction("Gravedad off"); } else { scene_manager_->switchBallsGravity(); // Toggle normal en modo física // Determinar estado actual de gravedad (gravity_force_ != 0.0f significa ON) const Ball* first_ball = scene_manager_->getFirstBall(); bool gravity_on = (first_ball == nullptr) ? true : (first_ball->getGravityForce() != 0.0f); - showNotificationForAction(gravity_on ? "Gravedad On" : "Gravedad Off"); + showNotificationForAction(gravity_on ? "Gravedad on" : "Gravedad off"); } } @@ -679,9 +679,9 @@ void Engine::toggleDemoMode() { // Mostrar notificación según el modo resultante if (new_mode == AppMode::SANDBOX && prev_mode != AppMode::SANDBOX) { - showNotificationForAction("MODO SANDBOX"); + showNotificationForAction("Modo sandbox"); } else if (new_mode == AppMode::DEMO && prev_mode != AppMode::DEMO) { - showNotificationForAction("MODO DEMO"); + showNotificationForAction("Modo demo"); } } @@ -692,9 +692,9 @@ void Engine::toggleDemoLiteMode() { // Mostrar notificación según el modo resultante if (new_mode == AppMode::SANDBOX && prev_mode != AppMode::SANDBOX) { - showNotificationForAction("MODO SANDBOX"); + showNotificationForAction("Modo sandbox"); } else if (new_mode == AppMode::DEMO_LITE && prev_mode != AppMode::DEMO_LITE) { - showNotificationForAction("MODO DEMO LITE"); + showNotificationForAction("Modo demo lite"); } } @@ -705,9 +705,9 @@ void Engine::toggleLogoMode() { // Mostrar notificación según el modo resultante if (new_mode == AppMode::SANDBOX && prev_mode != AppMode::SANDBOX) { - showNotificationForAction("MODO SANDBOX"); + showNotificationForAction("Modo sandbox"); } else if (new_mode == AppMode::LOGO && prev_mode != AppMode::LOGO) { - showNotificationForAction("MODO LOGO"); + showNotificationForAction("Modo logo"); } } @@ -1052,10 +1052,10 @@ void Engine::toggleRealFullscreen() { void Engine::applyPostFXPreset(int mode) { static constexpr float presets[4][3] = { - {1.5f, 0.0f, 0.0f}, // 0: Vinyeta - {1.5f, 0.0f, 0.8f}, // 1: Scanlines - {1.5f, 1.0f, 0.0f}, // 2: Cromàtica - {1.5f, 1.0f, 0.8f}, // 3: Complet + {0.8f, 0.0f, 0.0f}, // 0: Vinyeta + {0.8f, 0.0f, 0.8f}, // 1: Scanlines + {0.8f, 0.2f, 0.0f}, // 2: Cromàtica + {0.8f, 0.2f, 0.8f}, // 3: Complet }; postfx_uniforms_.vignette_strength = presets[mode][0]; postfx_uniforms_.chroma_strength = presets[mode][1]; @@ -1071,8 +1071,8 @@ void Engine::handlePostFXCycle() { void Engine::handlePostFXToggle() { static constexpr const char* names[4] = { - "PostFX: Vinyeta", "PostFX: Scanlines", - "PostFX: Cromàtica", "PostFX: Complet" + "PostFX viñeta", "PostFX scanlines", + "PostFX cromática", "PostFX completo" }; postfx_enabled_ = !postfx_enabled_; if (postfx_enabled_) { @@ -1082,7 +1082,7 @@ void Engine::handlePostFXToggle() { postfx_uniforms_.vignette_strength = 0.0f; postfx_uniforms_.chroma_strength = 0.0f; postfx_uniforms_.scanline_strength = 0.0f; - showNotificationForAction("PostFX: Desactivat"); + showNotificationForAction("PostFX desactivado"); } } @@ -1103,8 +1103,8 @@ void Engine::setPostFXParamOverrides(float vignette, float chroma) { void Engine::cycleShader() { static const char* names[5] = { - "PostFX: Desactivat", "PostFX: Vinyeta", "PostFX: Scanlines", - "PostFX: Cromàtica", "PostFX: Complet" + "PostFX desactivado", "PostFX viñeta", "PostFX scanlines", + "PostFX cromática", "PostFX completo" }; postfx_cycle_idx_ = (postfx_cycle_idx_ + 1) % 5; int cycle = postfx_cycle_idx_; @@ -1136,13 +1136,13 @@ void Engine::toggleIntegerScaling() { break; } - const char* mode_name = "INTEGER"; + const char* mode_name = "entero"; switch (current_scaling_mode_) { - case ScalingMode::INTEGER: mode_name = "INTEGER"; break; - case ScalingMode::LETTERBOX: mode_name = "LETTERBOX"; break; - case ScalingMode::STRETCH: mode_name = "STRETCH"; break; + case ScalingMode::INTEGER: mode_name = "entero"; break; + case ScalingMode::LETTERBOX: mode_name = "letterbox"; break; + case ScalingMode::STRETCH: mode_name = "stretch"; break; } - showNotificationForAction(std::string("Escalado: ") + mode_name); + showNotificationForAction(std::string("Escalado ") + mode_name); } void Engine::addSpriteToBatch(float x, float y, float w, float h, int r, int g, int b, float scale) { @@ -1306,8 +1306,8 @@ void Engine::switchTextureInternal(bool show_notification) { // Mostrar notificación con el nombre de la textura (solo si se solicita) if (show_notification) { std::string texture_name = texture_names_[current_texture_index_]; - std::transform(texture_name.begin(), texture_name.end(), texture_name.begin(), ::toupper); - showNotificationForAction("Sprite: " + texture_name); + std::transform(texture_name.begin(), texture_name.end(), texture_name.begin(), ::tolower); + showNotificationForAction("Textura " + texture_name); } } diff --git a/source/gpu/gpu_pipeline.hpp b/source/gpu/gpu_pipeline.hpp index 59048f1..7c154ce 100644 --- a/source/gpu/gpu_pipeline.hpp +++ b/source/gpu/gpu_pipeline.hpp @@ -8,8 +8,8 @@ // MSL binding: constant PostFXUniforms& u [[buffer(0)]] // ============================================================================ struct PostFXUniforms { - float vignette_strength; // 0 = none, 1.5 = default subtle - float chroma_strength; // 0 = off, 1 = full chromatic aberration + float vignette_strength; // 0 = none, 0.8 = default subtle + float chroma_strength; // 0 = off, 0.2 = default chromatic aberration float scanline_strength; // 0 = off, 1 = full scanlines float time; // accumulated seconds (for future animations) }; diff --git a/source/input/input_handler.cpp b/source/input/input_handler.cpp index 936353e..1d4c536 100644 --- a/source/input/input_handler.cpp +++ b/source/input/input_handler.cpp @@ -38,19 +38,19 @@ bool InputHandler::processEvents(Engine& engine) { // Controles de dirección de gravedad con teclas de cursor case SDLK_UP: - engine.handleGravityDirectionChange(GravityDirection::UP, "Gravedad Arriba"); + engine.handleGravityDirectionChange(GravityDirection::UP, "Gravedad arriba"); break; case SDLK_DOWN: - engine.handleGravityDirectionChange(GravityDirection::DOWN, "Gravedad Abajo"); + engine.handleGravityDirectionChange(GravityDirection::DOWN, "Gravedad abajo"); break; case SDLK_LEFT: - engine.handleGravityDirectionChange(GravityDirection::LEFT, "Gravedad Izquierda"); + engine.handleGravityDirectionChange(GravityDirection::LEFT, "Gravedad izquierda"); break; case SDLK_RIGHT: - engine.handleGravityDirectionChange(GravityDirection::RIGHT, "Gravedad Derecha"); + engine.handleGravityDirectionChange(GravityDirection::RIGHT, "Gravedad derecha"); break; case SDLK_V: @@ -193,40 +193,40 @@ bool InputHandler::processEvents(Engine& engine) { // Cambio de número de pelotas (escenarios 1-8) case SDLK_1: - engine.changeScenario(0, "10 Pelotas"); + engine.changeScenario(0, "10 pelotas"); break; case SDLK_2: - engine.changeScenario(1, "50 Pelotas"); + engine.changeScenario(1, "50 pelotas"); break; case SDLK_3: - engine.changeScenario(2, "100 Pelotas"); + engine.changeScenario(2, "100 pelotas"); break; case SDLK_4: - engine.changeScenario(3, "500 Pelotas"); + engine.changeScenario(3, "500 pelotas"); break; case SDLK_5: - engine.changeScenario(4, "1,000 Pelotas"); + engine.changeScenario(4, "1.000 pelotas"); break; case SDLK_6: - engine.changeScenario(5, "5,000 Pelotas"); + engine.changeScenario(5, "5.000 pelotas"); break; case SDLK_7: - engine.changeScenario(6, "10,000 Pelotas"); + engine.changeScenario(6, "10.000 pelotas"); break; case SDLK_8: - engine.changeScenario(7, "50,000 Pelotas"); + engine.changeScenario(7, "50.000 pelotas"); break; case SDLK_9: if (engine.isCustomScenarioEnabled()) { - std::string custom_notif = std::to_string(engine.getCustomScenarioBalls()) + " Pelotas"; + std::string custom_notif = std::to_string(engine.getCustomScenarioBalls()) + " pelotas"; engine.changeScenario(CUSTOM_SCENARIO_IDX, custom_notif.c_str()); } break; diff --git a/source/shapes_mgr/shape_manager.cpp b/source/shapes_mgr/shape_manager.cpp index 81a6048..04b1acb 100644 --- a/source/shapes_mgr/shape_manager.cpp +++ b/source/shapes_mgr/shape_manager.cpp @@ -1,6 +1,7 @@ #include "shape_manager.hpp" -#include // for std::min, std::max +#include // for std::min, std::max, std::transform +#include // for ::tolower #include // for rand #include // for std::string @@ -93,7 +94,7 @@ void ShapeManager::toggleShapeMode(bool force_gravity_on_exit) { // Mostrar notificación (solo si NO estamos en modo demo o logo) if (state_mgr_ && ui_mgr_ && state_mgr_->getCurrentMode() == AppMode::SANDBOX) { - ui_mgr_->showNotification("Modo Física"); + ui_mgr_->showNotification("Modo física"); } } } @@ -136,7 +137,7 @@ void ShapeManager::toggleDepthZoom() { // Mostrar notificación si está en modo SANDBOX if (ui_mgr_ && state_mgr_ && state_mgr_->getCurrentMode() == AppMode::SANDBOX) { - ui_mgr_->showNotification(depth_zoom_enabled_ ? "Profundidad On" : "Profundidad Off"); + ui_mgr_->showNotification(depth_zoom_enabled_ ? "Profundidad on" : "Profundidad off"); } } } @@ -277,7 +278,9 @@ void ShapeManager::activateShapeInternal(ShapeType type) { // Mostrar notificación con nombre de figura (solo si NO estamos en modo demo o logo) if (active_shape_ && state_mgr_ && ui_mgr_ && state_mgr_->getCurrentMode() == AppMode::SANDBOX) { - std::string notification = std::string("Modo ") + active_shape_->getName(); + std::string shape_name = active_shape_->getName(); + std::transform(shape_name.begin(), shape_name.end(), shape_name.begin(), ::tolower); + std::string notification = std::string("Modo ") + shape_name; ui_mgr_->showNotification(notification); } }