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:
1 parent
3f09858203
commit
29cb4c2211
4 files changed
+137
-97
No files matched your search
@@ -19,9 +19,17 @@ namespace RoomFsm {
|
||||
|
||||
// Sub-fase i temps acumulat dins de l'estat actual. Es reseteja a
|
||||
// {0, 0} quan es canvia d'estat. Significat de `phase` per estat:
|
||||
// ROOM_INTRO: 0=fade_in, 1=text_delay, 2=text_enter, 3=text_hold, 4=text_exit
|
||||
// ROOM_OUTRO: 0=text_enter, 1=text_hold, 2=text_exit, 3=fade_out, 4=black_hold
|
||||
// ROOM_INTRO: 0=fade_in, 1=text_delay, 2=text_enter, 3=text_hold,
|
||||
// 4=text_exit, 5=music_tail
|
||||
// ROOM_OUTRO: 0=text_enter, 1=text_hold, 2=text_exit, 3=music_tail,
|
||||
// 4=fade_out, 5=black_hold
|
||||
// PLAYING: no s'usa.
|
||||
// Les fases `music_tail` són la cua silenciosa que sincronitza el
|
||||
// timeline visual amb el final del .ogg de música corresponent: el
|
||||
// GameScene les calcula a `enterRoomIntro` / `setState(ROOM_OUTRO)`
|
||||
// a partir de la durada precarregada del .ogg menys el sumatori de
|
||||
// les fases de text. Si la música no arrenca, la cua és 0 i la fase
|
||||
// es consumeix instantàniament (la transició no s'embussa mai).
|
||||
struct Transition {
|
||||
int phase{0};
|
||||
int elapsed_ms{0};
|
||||
@@ -47,6 +55,16 @@ namespace RoomFsm {
|
||||
// sense recompilar — útil per donar respir abans del nou rètol.
|
||||
int outro_black_hold_ms{0};
|
||||
|
||||
// Cua silenciosa entre el text d'INTRO/OUTRO i la fi del .ogg de
|
||||
// música corresponent. NO es llig del YAML — el GameScene la
|
||||
// calcula a `enterRoomIntro` / `setState(ROOM_OUTRO)` com
|
||||
// `max(0, music_duration - text_total)`. Així el timeline acaba
|
||||
// exactament quan la música drena i no cal cap callback de fi
|
||||
// de música. 0 quan no hi ha música o quan el text dura més que
|
||||
// la pista.
|
||||
int intro_music_tail_ms{0};
|
||||
int outro_music_tail_ms{0};
|
||||
|
||||
// Mil·lisegons des del callback de fi de la música d'INTRO
|
||||
// (`room_intro.ogg`) en què cau l'spawn aeri del primer slot
|
||||
// actiu. 0 = cau al moment exacte que la música acaba. El
|
||||
|
||||
Reference in new issue
Block a user