Lligua el reverb al moment de la cinemàtica d'entrada de sala, no als
salts en general. La sala dóna "més detall" sonor a l'INTRO; un cop el
joc està en marxa, els salts (i els respawns post-mort) tornen al so
sec. Així el primer aterratge es percep com a part de l'animació
d'arribada, no com una propietat permanent del personatge.
- RoomFsm::Config: nou camp `intro_land_reverb_preset` carregat des
de `room_intro.land_reverb` a `data/scenes/game.yaml` (per defecte
'stone_hall'). Buit = sense reverb a l'INTRO.
- Player: membre `next_land_reverb_preset_` consumit per
`integrateJump` al primer aterratge que el trobe armat. Setter
públic `armNextLandReverb(preset)` per a GameScene. Cap altre punt
(respawn, exit, disable) el toca: el reverb és estrictament
one-shot lligat al spawn aeri d'INTRO.
- GameScene::triggerPlayerSpawn: arma el preset al jugador just
després de `spawnFromAir`, així cada slot rep el seu reverb un
sol cop per cinemàtica.
- JumpConfig perd `land_reverb_preset` i els YAMLs de Sam/Morcus
perden `land_reverb`: la decisió ja no viu al personatge.
45 lines
2.0 KiB
YAML
45 lines
2.0 KiB
YAML
# Configuració de la GameScene: timings i corbes de la FSM de sala
|
|
# (ROOM_INTRO i ROOM_OUTRO). Tots els valors són ms i tota la geometria
|
|
# i font del text es reutilitzen del tema UI (data/ui.yaml > pause +
|
|
# notification). Si manca el fitxer o alguna clau, GameScene cau als
|
|
# fallbacks compilats; veure `readSceneConfig` a game_scene.cpp.
|
|
|
|
room_intro:
|
|
fade_in_ms: 500 # negre opac → món visible
|
|
text_delay_ms: 500 # espera amb el món net abans de sortir el text
|
|
text_enter_ms: 400 # text esquerra → centre
|
|
text_hold_ms: 2000 # text quiet al centre
|
|
text_exit_ms: 400 # text centre → fora per l'esquerra
|
|
line_gap_px: -4 # px extra entre les dues línies (piràmide / sala)
|
|
player_spawn_delay_ms: 2400 # ms des de l'inici d'INTRO al spawn aeri.
|
|
player2_spawn_delay_ms: 2700 # només mode BOTH. Trenca la simultaneïtat.
|
|
# Preset de reverb (catàleg a `data/sounds.yaml`) aplicat al primer
|
|
# LAND de cada jugador durant la cinemàtica d'entrada. La sala dona
|
|
# "més detall" sonor a l'INTRO; els salts del joc i els respawns
|
|
# post-mort cauen al so sec. Buit o absent = sense reverb.
|
|
land_reverb: stone_hall
|
|
|
|
room_outro:
|
|
text_enter_ms: 400
|
|
text_hold_ms: 2000
|
|
text_exit_ms: 400
|
|
fade_out_ms: 500 # món visible → negre opac
|
|
line_gap_px: -4 # px extra entre les dues línies (fase / completada)
|
|
black_hold_ms: 500 # pausa en negre abans d'entrar a la pròxima sala
|
|
|
|
text:
|
|
# Noms d'easing tal com els resol UiConfig::curveByName (vegeu
|
|
# `data/ui.yaml`). El text entra suau i surt accelerant.
|
|
enter_curve: outCubic
|
|
exit_curve: inCubic
|
|
|
|
# Panel translúcid pintat sota el rètol de transició (INTRO i OUTRO).
|
|
# Va centrat verticalment al centre del playfield i ocupa tota
|
|
# l'amplada del canvas. Creix d'altura amb la mateixa enter_curve del
|
|
# text i decreix amb l'exit_curve. `color` són tres canals RGB (0..255);
|
|
# `alpha` és la transparència del blend (0 = invisible, 255 = opac).
|
|
text_panel:
|
|
color: [36, 182, 170]
|
|
alpha: 128
|
|
height_px: 32
|