LoadingScreen: nous efectes de so. Millores acabades

This commit is contained in:
2025-11-02 11:00:09 +01:00
parent c5563768af
commit 4eac48ed78
9 changed files with 24 additions and 16 deletions

View File

@@ -91,28 +91,30 @@ void LoadingScreen::transitionToState(State new_state) {
case State::HEADER1:
case State::HEADER2:
current_border_type_ = Border::RED_AND_CYAN;
// Reproducir sonido de cargar el header
Audio::get()->playMusic("loading_sound1.ogg");
Audio::get()->playMusic("loading_header.ogg", 0);
break;
case State::DATA1:
printProgramName();
/* CONTINUA */
current_border_type_ = Border::YELLOW_AND_BLUE;
Audio::get()->playMusic("loading_data1.ogg", 0);
break;
case State::DATA2:
current_border_type_ = Border::YELLOW_AND_BLUE;
Audio::get()->playMusic("loading_data2.ogg", 0);
break;
case State::LOADING_MONO:
current_border_type_ = Border::YELLOW_AND_BLUE;
// Reproducir sonido de carga monocromática
Audio::get()->playMusic("loading_sound2.ogg");
Audio::get()->playMusic("loading_screen_data.ogg", 0);
break;
case State::LOADING_COLOR:
current_border_type_ = Border::YELLOW_AND_BLUE;
// Reproducir sonido de carga en color
Audio::get()->playMusic("loading_sound3.ogg");
Audio::get()->playMusic("loading_screen_color.ogg", 0);
break;
case State::COMPLETE:
current_border_type_ = Border::WHITE;
current_border_type_ = Border::BLACK;
// Transicionar a la pantalla de título
SceneManager::current = SceneManager::Scene::TITLE;
SceneManager::options = SceneManager::Options::TITLE_WITH_LOADING_SCREEN;
@@ -409,6 +411,9 @@ void LoadingScreen::renderBorder() {
case Border::WHITE:
renderColoredBorder(PaletteColor::WHITE);
break;
case Border::BLACK:
renderColoredBorder(PaletteColor::BLACK);
break;
case Border::RED:
renderColoredBorder(PaletteColor::RED);
break;
@@ -455,7 +460,7 @@ void LoadingScreen::updateSilent(float delta_time) {
// Oscilación compuesta para simular picos de ruido
const float modulation = std::sin(noise_.total_time * 4.2F) * std::sin(noise_.total_time * 1.7F + 0.5F);
noise_.value = std::fabs(modulation); // rango [0.0, 1.0]
noise_.value = std::fabs(modulation); // rango [0.0, 1.0]
// Detecta cruce de umbral solo si venía de abajo
if (noise_.value > NOISE_THRESHOLD && !noise_.crossed) {

View File

@@ -31,6 +31,7 @@ class LoadingScreen {
YELLOW_AND_BLUE,
RED_AND_CYAN,
WHITE,
BLACK,
RED,
CYAN
};
@@ -59,12 +60,12 @@ class LoadingScreen {
// --- Constantes de tiempo (en segundos) ---
static constexpr float SILENT1_DURATION = 2.0F; // Pausa inicial
static constexpr float HEADER1_DURATION = 4.0F; // Cabecera
static constexpr float DATA1_DURATION = 0.1F; // Datos
static constexpr float SILENT2_DURATION = 3.0F; // Segunda pausa
static constexpr float HEADER2_DURATION = 2.0F; // Cabecera pantalla
static constexpr float DATA1_DURATION = 0.2F; // Datos
static constexpr float SILENT2_DURATION = 2.0F; // Segunda pausa
static constexpr float HEADER2_DURATION = 3.0F; // Cabecera pantalla
static constexpr float LOADING_MONO_DURATION = 16.0F; // Duración total de la carga monocromática
static constexpr float LOADING_COLOR_DURATION = 4.0F; // Duración total de la carga en color
static constexpr float DATA2_DURATION = 2.0F; // Datos
static constexpr float DATA2_DURATION = 5.0F; // Datos
// --- Constantes de geometría ---
static constexpr int MONO_TOTAL_LINES = 192; // Total de líneas en carga monocromática