fix: multidispositivo - Random seguro + gestor host + reacción clientes
Some checks failed
Build & Deploy Farolero / Análisis de código (push) Has been cancelled
Build & Deploy Farolero / Build APK + AAB release (push) Has been cancelled

- Random.secure() para selección de impostores (no predecible)
- Random.secure() también en desempate de votación
- Nueva PantallaGestorHost para coordinación multi-device
- Navegación: host va a gestor tras iniciar, no a pantalla de palabra
- PantallaPalabraCliente: cada jugador ve su palabra en su móvil
- PantallaDebateCliente: debate con timer y botón solicitar votación
- PantallaVotacionCliente: voto desde el móvil del cliente
- PantallaUnirse: listener que reacciona a partidaInicio y cambia de fase
- Protocolo: listo/voto/solicitoVotacion via Nearby hacia el host
- Nuevas cadenas l10n ES
This commit is contained in:
ShanaiaBot
2026-04-15 02:09:05 +02:00
parent 302cdf6f1a
commit eb2662f561
27 changed files with 2282 additions and 60 deletions

View File

@@ -327,6 +327,12 @@ abstract class AppLocalizations {
/// **'El impostor conoce la categoría'**
String get impostorClueDescription;
/// No description provided for @debate.
///
/// In es, this message translates to:
/// **'🗣️ Debate'**
String get debate;
/// No description provided for @debateTime.
///
/// In es, this message translates to:
@@ -1005,6 +1011,36 @@ abstract class AppLocalizations {
/// **'Jugadores conectados'**
String get connectedPlayers;
/// No description provided for @hostGame.
///
/// In es, this message translates to:
/// **'Gestor de partida'**
String get hostGame;
/// No description provided for @waitingPlayersSeeWord.
///
/// In es, this message translates to:
/// **'Esperando que todos vean su palabra...'**
String get waitingPlayersSeeWord;
/// No description provided for @activePlayers.
///
/// In es, this message translates to:
/// **'Jugadores activos'**
String get activePlayers;
/// No description provided for @playersVoted.
///
/// In es, this message translates to:
/// **'Han votado'**
String get playersVoted;
/// No description provided for @waitingVoting.
///
/// In es, this message translates to:
/// **'Esperando que voten...'**
String get waitingVoting;
/// No description provided for @waitingForPlayers.
///
/// In es, this message translates to:
@@ -1106,6 +1142,60 @@ abstract class AppLocalizations {
/// In es, this message translates to:
/// **'¿No aparece? Escanea el QR del host'**
String get orScanQR;
/// No description provided for @iveSeenIt.
///
/// In es, this message translates to:
/// **'Ya la he visto'**
String get iveSeenIt;
/// No description provided for @clueIs.
///
/// In es, this message translates to:
/// **'La pista es: {category}'**
String clueIs(String category);
/// No description provided for @debatePhaseActive.
///
/// In es, this message translates to:
/// **'Fase de debate activa'**
String get debatePhaseActive;
/// No description provided for @debateInstructions.
///
/// In es, this message translates to:
/// **'Hablad entre vosotros y decid quién creéis que es el impostor. Cuando estéis listos, solicitad la votación.'**
String get debateInstructions;
/// No description provided for @solicitarVotacion.
///
/// In es, this message translates to:
/// **'Solicitar votación'**
String get solicitarVotacion;
/// No description provided for @votacionSolicitada.
///
/// In es, this message translates to:
/// **'Votación solicitada'**
String get votacionSolicitada;
/// No description provided for @whoDoYouThinkIsTheImpostor.
///
/// In es, this message translates to:
/// **'¿Quién es el impostor?'**
String get whoDoYouThinkIsTheImpostor;
/// No description provided for @selectOnePlayer.
///
/// In es, this message translates to:
/// **'Selecciona a un jugador para votar'**
String get selectOnePlayer;
/// No description provided for @votar.
///
/// In es, this message translates to:
/// **'Votar'**
String get votar;
}
class _AppLocalizationsDelegate