feat(intro): delay de spawn independent per al segon jugador en mode BOTH

This commit is contained in:
JailDesigner committed 2026-04-26 18:55:30 +02:00
1 parent 99eb42b319
commit 8e2865efbd
5 files changed
+55 -29

No files matched your search

+13 -11
View File
@@ -99,19 +99,21 @@ class GameScene : public Scene {
std::array<bool, 2> players_starts_active_{false, false};
// Mil·lisegons des de l'entrada en ROOM_INTRO, per disparar la
// cinemàtica de spawn aeri quan s'arriba a
// `transition_config_.player_spawn_delay_ms`. Es reseteja a
// `setState(ROOM_INTRO)`. `players_spawned_in_intro_` garanteix
// que el trigger només es dispara una vegada per cicle.
// cinemàtica de spawn aeri quan s'arriba al delay corresponent al
// slot. Es reseteja a `setState(ROOM_INTRO)`. Cada slot té el seu
// propi flag de "ja he caigut" — així podem caure en moments
// distints en mode BOTH (`player_spawn_delay_ms` per a P1 i
// `player2_spawn_delay_ms` per a P2).
int room_intro_elapsed_ms_{0};
bool players_spawned_in_intro_{false};
std::array<bool, 2> players_spawned_in_intro_{false, false};
// Cinemàtica de spawn: posa els slots actius en AIRBORNE des d'una
// altura fora de pantalla. Cridat per `updateRoomTransition` quan
// `room_intro_elapsed_ms_` supera el delay configurat. Idempotent
// (consulta `players_spawned_in_intro_`). També és el punt al qual
// es connectarà el respawn post-mort en el futur.
void triggerActivePlayerSpawn();
// Cinemàtica de spawn d'un slot concret. Posa el slot indicat en
// AIRBORNE des d'una altura fora de pantalla. Cridat per
// `updateRoomTransition` quan `room_intro_elapsed_ms_` supera el
// delay específic de l'slot. Idempotent (consulta el flag corresponent
// a `players_spawned_in_intro_`). També és el punt al qual es
// connectarà el respawn post-mort en el futur.
void triggerPlayerSpawn(std::size_t slot_index);
// Vista plana de punters crus — la fa servir Player com a llista
// d'obstacles mòbils a la callback de col·lisió. Es construeix un sol