feat(game): spawn inicial de ROOM_INTRO sense immunitat

This commit is contained in:
JailDesigner committed 2026-05-11 07:53:56 +02:00
1 parent 2cbf1bb6e0
commit b7811180ba
3 files changed
+19 -8

No files matched your search

+7 -4
View File
@@ -1589,10 +1589,13 @@ void Player::respawn(float x, float y) {
setPosX(x);
setPosY(y);
// Immunitat post-spawn: armem la finestra de gràcia amb la durada del
// YAML. Cobreix l'aparició inicial (`spawnFromAir` → `respawn`) i el
// respawn post-mort (`respawnFromDying` → `respawn`). Si el bloc
// `immunity:` manca al YAML, `duration_ms` és 0 i `setImmunity` és
// no-op — comportament idèntic al d'abans.
// YAML. Cobreix el join mid-partida (`joinPlayer` → `spawnFromAir` →
// `respawn`) i el respawn post-mort (`respawnFromDying` → `respawn`).
// L'spawn inicial de ROOM_INTRO també hi passa, però `triggerPlayerSpawn`
// crida `setImmunity(0)` immediatament després per cancel·lar-la (els
// enemics ja estan apareixent i el jugador no ha de tindre gràcia).
// Si el bloc `immunity:` manca al YAML, `duration_ms` és 0 i el timer
// queda a 0 — sense gràcia, comportament idèntic al d'abans.
setImmunity(immunity_config.duration_ms);
}
+4 -4
View File
@@ -331,11 +331,11 @@ class Player : public AnimatedSprite {
// sortida lògica del món. Idempotent: una segona crida reescriu el
// timer (no acumula). Visualment, el render alterna la paleta del
// sprite amb una paleta plana cada `immunity_config.blink_period_ms`
// ms. Si `duration_ms <= 0` és no-op (manera de cancel·lar
// explícitament la immunitat seria `setImmunity(0)` — equivalent al
// comportament natural quan el timer s'esgota).
// ms. `setImmunity(0)` cancel·la la immunitat activa (sobreescriu el
// timer a 0) — equivalent al comportament natural quan el timer
// s'esgota. Valors negatius es clampejen a 0.
void setImmunity(float duration_ms) {
if (duration_ms > 0.0F) { immunity_remaining_ms_ = duration_ms; }
immunity_remaining_ms_ = duration_ms > 0.0F ? duration_ms : 0.0F;
}
// Cert mentre el jugador té immunitat activa. Comprovat per