afegit so al LOGO
This commit is contained in:
2
Makefile
2
Makefile
@@ -36,6 +36,8 @@ APP_SOURCES := \
|
|||||||
source/main.cpp \
|
source/main.cpp \
|
||||||
source/core/system/director.cpp \
|
source/core/system/director.cpp \
|
||||||
source/core/system/global_events.cpp \
|
source/core/system/global_events.cpp \
|
||||||
|
source/core/audio/audio.cpp \
|
||||||
|
source/core/audio/audio_cache.cpp \
|
||||||
source/core/rendering/sdl_manager.cpp \
|
source/core/rendering/sdl_manager.cpp \
|
||||||
source/core/rendering/line_renderer.cpp \
|
source/core/rendering/line_renderer.cpp \
|
||||||
source/core/rendering/color_oscillator.cpp \
|
source/core/rendering/color_oscillator.cpp \
|
||||||
|
|||||||
BIN
data/sounds/logo.wav
Normal file
BIN
data/sounds/logo.wav
Normal file
Binary file not shown.
@@ -7,6 +7,7 @@
|
|||||||
#include <cfloat>
|
#include <cfloat>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
#include "../../core/audio/audio.hpp"
|
||||||
#include "../../core/graphics/shape_loader.hpp"
|
#include "../../core/graphics/shape_loader.hpp"
|
||||||
#include "../../core/rendering/shape_renderer.hpp"
|
#include "../../core/rendering/shape_renderer.hpp"
|
||||||
#include "../../core/system/gestor_escenes.hpp"
|
#include "../../core/system/gestor_escenes.hpp"
|
||||||
@@ -42,6 +43,7 @@ EscenaLogo::EscenaLogo(SDLManager& sdl)
|
|||||||
lletra_explosio_index_(0),
|
lletra_explosio_index_(0),
|
||||||
temps_des_ultima_explosio_(0.0f) {
|
temps_des_ultima_explosio_(0.0f) {
|
||||||
std::cout << "Escena Logo: Inicialitzant...\n";
|
std::cout << "Escena Logo: Inicialitzant...\n";
|
||||||
|
so_reproduit_.fill(false); // Inicialitzar seguiment de sons
|
||||||
inicialitzar_lletres();
|
inicialitzar_lletres();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -229,11 +231,31 @@ void EscenaLogo::actualitzar(float delta_time) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EstatAnimacio::ANIMATION:
|
case EstatAnimacio::ANIMATION: {
|
||||||
|
// Reproduir so per cada lletra quan comença a aparèixer
|
||||||
|
float global_progress = std::min(temps_estat_actual_ / DURACIO_ZOOM, 1.0f);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < lletres_.size() && i < so_reproduit_.size(); i++) {
|
||||||
|
if (!so_reproduit_[i]) {
|
||||||
|
float letra_progress = calcular_progress_letra(
|
||||||
|
i,
|
||||||
|
lletres_.size(),
|
||||||
|
global_progress,
|
||||||
|
THRESHOLD_LETRA);
|
||||||
|
|
||||||
|
// Reproduir so quan la lletra comença a aparèixer (progress > 0)
|
||||||
|
if (letra_progress > 0.0f) {
|
||||||
|
Audio::get()->playSound("logo.wav", Audio::Group::INTERFACE);
|
||||||
|
so_reproduit_[i] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (totes_lletres_completes()) {
|
if (totes_lletres_completes()) {
|
||||||
canviar_estat(EstatAnimacio::POST_ANIMATION);
|
canviar_estat(EstatAnimacio::POST_ANIMATION);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case EstatAnimacio::POST_ANIMATION:
|
case EstatAnimacio::POST_ANIMATION:
|
||||||
if (temps_estat_actual_ >= DURACIO_POST_ANIMATION) {
|
if (temps_estat_actual_ >= DURACIO_POST_ANIMATION) {
|
||||||
|
|||||||
@@ -52,6 +52,9 @@ class EscenaLogo {
|
|||||||
|
|
||||||
std::vector<LetraLogo> lletres_; // 9 lletres: J-A-I-L-G-A-M-E-S
|
std::vector<LetraLogo> lletres_; // 9 lletres: J-A-I-L-G-A-M-E-S
|
||||||
|
|
||||||
|
// Seguiment de sons de lletres (evitar reproduccions repetides)
|
||||||
|
std::array<bool, 9> so_reproduit_; // Track si cada lletra ja ha reproduit el so
|
||||||
|
|
||||||
// Constants d'animació
|
// Constants d'animació
|
||||||
static constexpr float DURACIO_PRE = 1.5f; // Duració PRE_ANIMATION (pantalla negra)
|
static constexpr float DURACIO_PRE = 1.5f; // Duració PRE_ANIMATION (pantalla negra)
|
||||||
static constexpr float DURACIO_ZOOM = 4.0f; // Duració del zoom (segons)
|
static constexpr float DURACIO_ZOOM = 4.0f; // Duració del zoom (segons)
|
||||||
|
|||||||
Reference in New Issue
Block a user