refactor(room-fsm): timeline pur amb music_tail; fades INTRO/OUTRO via Transitions::FadeToBlack i sense callbacks de fi de música

This commit is contained in:
JailDesigner committed 2026-05-06 19:25:19 +02:00
1 parent 3f09858203
commit 29cb4c2211
4 files changed
+137 -97

No files matched your search

+10 -2
View File
@@ -95,12 +95,16 @@ namespace RoomFsm {
t.elapsed_ms += delta_ms;
if (current == State::ROOM_INTRO) {
const std::array<int, 5> DURS = {
const std::array<int, 6> DURS = {
cfg.intro_fade_in_ms,
cfg.intro_text_delay_ms,
cfg.intro_text_enter_ms,
cfg.intro_text_hold_ms,
cfg.intro_text_exit_ms,
// Cua silenciosa fins al final de room_intro.ogg. La
// calcula GameScene després de `playMusic`. Si la música
// no arrenca, és 0 i la fase es consumeix sense esperar.
cfg.intro_music_tail_ms,
};
while (t.phase < static_cast<int>(DURS.size()) && t.elapsed_ms >= DURS[t.phase]) {
t.elapsed_ms -= DURS[t.phase];
@@ -111,10 +115,14 @@ namespace RoomFsm {
}
// ROOM_OUTRO
const std::array<int, 5> DURS = {
const std::array<int, 6> DURS = {
cfg.outro_text_enter_ms,
cfg.outro_text_hold_ms,
cfg.outro_text_exit_ms,
// Cua silenciosa fins al final de room_outro.ogg, abans
// d'arrencar el fade-out. Així el negre cau just al final
// de la pista; sense cua si la música no arrenca.
cfg.outro_music_tail_ms,
cfg.outro_fade_out_ms,
// Pausa final en negre, després del fade-out i abans del
// canvi a INTRO. Si és 0 ms, el while-loop la consumeix