feat(multi-device): host puede participar como jugador

- Añadido modelo Usuario con pool de usuarios sincronizado
- El host ahora recibe palabra y rol como cualquier jugador
- UI de selección de perfil en pantallas de lobby
- Los clientes pueden ver usuarios del servidor o crear nuevos
- El juego no inicia hasta que el host selecciona perfil
This commit is contained in:
ShanaiaBot
2026-04-24 18:47:56 +02:00
parent 3df3ae1e95
commit d3fc3386f9
31 changed files with 1266 additions and 106 deletions

View File

@@ -255,5 +255,11 @@
"searchingGames": "Searching for nearby games...",
"noGamesFound": "No games found",
"noGamesFoundHint": "Make sure the host has the room open and you are nearby",
"orScanQR": "Not showing up? Scan the host's QR code"
}
"orScanQR": "Not showing up? Scan the host's QR code",
"selectYourProfile": "Your profile",
"selectProfile": "Select a profile",
"createNewUser": "Create new user",
"userNameRequired": "Name cannot be empty",
"profileSelected": "Profile selected",
"availableProfiles": "Available profiles"
}

View File

@@ -277,5 +277,11 @@
"votacionSolicitada": "Votación solicitada",
"whoDoYouThinkIsTheImpostor": "¿Quién es el impostor?",
"selectOnePlayer": "Selecciona a un jugador para votar",
"votar": "Votar"
}
"votar": "Votar",
"selectYourProfile": "Tu perfil",
"selectProfile": "Selecciona un perfil",
"createNewUser": "Crear nuevo usuario",
"userNameRequired": "El nombre no puede estar vacio",
"profileSelected": "Perfil seleccionado",
"availableProfiles": "Perfiles disponibles"
}

View File

@@ -1196,6 +1196,42 @@ abstract class AppLocalizations {
/// In es, this message translates to:
/// **'Votar'**
String get votar;
/// No description provided for @selectYourProfile.
///
/// In es, this message translates to:
/// **'Tu perfil'**
String get selectYourProfile;
/// No description provided for @selectProfile.
///
/// In es, this message translates to:
/// **'Selecciona un perfil'**
String get selectProfile;
/// No description provided for @createNewUser.
///
/// In es, this message translates to:
/// **'Crear nuevo usuario'**
String get createNewUser;
/// No description provided for @userNameRequired.
///
/// In es, this message translates to:
/// **'El nombre no puede estar vacio'**
String get userNameRequired;
/// No description provided for @profileSelected.
///
/// In es, this message translates to:
/// **'Perfil seleccionado'**
String get profileSelected;
/// No description provided for @availableProfiles.
///
/// In es, this message translates to:
/// **'Perfiles disponibles'**
String get availableProfiles;
}
class _AppLocalizationsDelegate

View File

@@ -579,4 +579,22 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get votar => 'Votar';
@override
String get selectYourProfile => 'Tu perfil';
@override
String get selectProfile => 'Selecciona un perfil';
@override
String get createNewUser => 'Crear nuevo usuario';
@override
String get userNameRequired => 'El nombre no puede estar vacio';
@override
String get profileSelected => 'Perfil seleccionado';
@override
String get availableProfiles => 'Perfiles disponibles';
}

View File

@@ -582,4 +582,22 @@ class AppLocalizationsCa extends AppLocalizations {
@override
String get votar => 'Votar';
@override
String get selectYourProfile => 'Tu perfil';
@override
String get selectProfile => 'Selecciona un perfil';
@override
String get createNewUser => 'Crear nuevo usuario';
@override
String get userNameRequired => 'El nombre no puede estar vacio';
@override
String get profileSelected => 'Perfil seleccionado';
@override
String get availableProfiles => 'Perfiles disponibles';
}

View File

@@ -585,4 +585,22 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get votar => 'Votar';
@override
String get selectYourProfile => 'Tu perfil';
@override
String get selectProfile => 'Selecciona un perfil';
@override
String get createNewUser => 'Crear nuevo usuario';
@override
String get userNameRequired => 'El nombre no puede estar vacio';
@override
String get profileSelected => 'Perfil seleccionado';
@override
String get availableProfiles => 'Perfiles disponibles';
}

View File

@@ -579,4 +579,22 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get votar => 'Votar';
@override
String get selectYourProfile => 'Your profile';
@override
String get selectProfile => 'Select a profile';
@override
String get createNewUser => 'Create new user';
@override
String get userNameRequired => 'Name cannot be empty';
@override
String get profileSelected => 'Profile selected';
@override
String get availableProfiles => 'Available profiles';
}

View File

@@ -581,4 +581,22 @@ class AppLocalizationsEs extends AppLocalizations {
@override
String get votar => 'Votar';
@override
String get selectYourProfile => 'Tu perfil';
@override
String get selectProfile => 'Selecciona un perfil';
@override
String get createNewUser => 'Crear nuevo usuario';
@override
String get userNameRequired => 'El nombre no puede estar vacio';
@override
String get profileSelected => 'Perfil seleccionado';
@override
String get availableProfiles => 'Perfiles disponibles';
}

View File

@@ -584,4 +584,22 @@ class AppLocalizationsEu extends AppLocalizations {
@override
String get votar => 'Votar';
@override
String get selectYourProfile => 'Tu perfil';
@override
String get selectProfile => 'Selecciona un perfil';
@override
String get createNewUser => 'Crear nuevo usuario';
@override
String get userNameRequired => 'El nombre no puede estar vacio';
@override
String get profileSelected => 'Perfil seleccionado';
@override
String get availableProfiles => 'Perfiles disponibles';
}

View File

@@ -582,4 +582,22 @@ class AppLocalizationsFr extends AppLocalizations {
@override
String get votar => 'Votar';
@override
String get selectYourProfile => 'Tu perfil';
@override
String get selectProfile => 'Selecciona un perfil';
@override
String get createNewUser => 'Crear nuevo usuario';
@override
String get userNameRequired => 'El nombre no puede estar vacio';
@override
String get profileSelected => 'Perfil seleccionado';
@override
String get availableProfiles => 'Perfiles disponibles';
}

View File

@@ -581,4 +581,22 @@ class AppLocalizationsHi extends AppLocalizations {
@override
String get votar => 'Votar';
@override
String get selectYourProfile => 'Tu perfil';
@override
String get selectProfile => 'Selecciona un perfil';
@override
String get createNewUser => 'Crear nuevo usuario';
@override
String get userNameRequired => 'El nombre no puede estar vacio';
@override
String get profileSelected => 'Perfil seleccionado';
@override
String get availableProfiles => 'Perfiles disponibles';
}

View File

@@ -582,4 +582,22 @@ class AppLocalizationsIt extends AppLocalizations {
@override
String get votar => 'Votar';
@override
String get selectYourProfile => 'Tu perfil';
@override
String get selectProfile => 'Selecciona un perfil';
@override
String get createNewUser => 'Crear nuevo usuario';
@override
String get userNameRequired => 'El nombre no puede estar vacio';
@override
String get profileSelected => 'Perfil seleccionado';
@override
String get availableProfiles => 'Perfiles disponibles';
}

View File

@@ -579,4 +579,22 @@ class AppLocalizationsJa extends AppLocalizations {
@override
String get votar => 'Votar';
@override
String get selectYourProfile => 'Tu perfil';
@override
String get selectProfile => 'Selecciona un perfil';
@override
String get createNewUser => 'Crear nuevo usuario';
@override
String get userNameRequired => 'El nombre no puede estar vacio';
@override
String get profileSelected => 'Perfil seleccionado';
@override
String get availableProfiles => 'Perfiles disponibles';
}

View File

@@ -579,4 +579,22 @@ class AppLocalizationsKo extends AppLocalizations {
@override
String get votar => 'Votar';
@override
String get selectYourProfile => 'Tu perfil';
@override
String get selectProfile => 'Selecciona un perfil';
@override
String get createNewUser => 'Crear nuevo usuario';
@override
String get userNameRequired => 'El nombre no puede estar vacio';
@override
String get profileSelected => 'Perfil seleccionado';
@override
String get availableProfiles => 'Perfiles disponibles';
}

View File

@@ -582,4 +582,22 @@ class AppLocalizationsNl extends AppLocalizations {
@override
String get votar => 'Votar';
@override
String get selectYourProfile => 'Tu perfil';
@override
String get selectProfile => 'Selecciona un perfil';
@override
String get createNewUser => 'Crear nuevo usuario';
@override
String get userNameRequired => 'El nombre no puede estar vacio';
@override
String get profileSelected => 'Perfil seleccionado';
@override
String get availableProfiles => 'Perfiles disponibles';
}

View File

@@ -582,4 +582,22 @@ class AppLocalizationsPl extends AppLocalizations {
@override
String get votar => 'Votar';
@override
String get selectYourProfile => 'Tu perfil';
@override
String get selectProfile => 'Selecciona un perfil';
@override
String get createNewUser => 'Crear nuevo usuario';
@override
String get userNameRequired => 'El nombre no puede estar vacio';
@override
String get profileSelected => 'Perfil seleccionado';
@override
String get availableProfiles => 'Perfiles disponibles';
}

View File

@@ -583,4 +583,22 @@ class AppLocalizationsPt extends AppLocalizations {
@override
String get votar => 'Votar';
@override
String get selectYourProfile => 'Tu perfil';
@override
String get selectProfile => 'Selecciona un perfil';
@override
String get createNewUser => 'Crear nuevo usuario';
@override
String get userNameRequired => 'El nombre no puede estar vacio';
@override
String get profileSelected => 'Perfil seleccionado';
@override
String get availableProfiles => 'Perfiles disponibles';
}

View File

@@ -582,4 +582,22 @@ class AppLocalizationsRu extends AppLocalizations {
@override
String get votar => 'Votar';
@override
String get selectYourProfile => 'Tu perfil';
@override
String get selectProfile => 'Selecciona un perfil';
@override
String get createNewUser => 'Crear nuevo usuario';
@override
String get userNameRequired => 'El nombre no puede estar vacio';
@override
String get profileSelected => 'Perfil seleccionado';
@override
String get availableProfiles => 'Perfiles disponibles';
}

View File

@@ -581,4 +581,22 @@ class AppLocalizationsTr extends AppLocalizations {
@override
String get votar => 'Votar';
@override
String get selectYourProfile => 'Tu perfil';
@override
String get selectProfile => 'Selecciona un perfil';
@override
String get createNewUser => 'Crear nuevo usuario';
@override
String get userNameRequired => 'El nombre no puede estar vacio';
@override
String get profileSelected => 'Perfil seleccionado';
@override
String get availableProfiles => 'Perfiles disponibles';
}

View File

@@ -578,6 +578,24 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get votar => 'Votar';
@override
String get selectYourProfile => 'Tu perfil';
@override
String get selectProfile => 'Selecciona un perfil';
@override
String get createNewUser => 'Crear nuevo usuario';
@override
String get userNameRequired => 'El nombre no puede estar vacio';
@override
String get profileSelected => 'Perfil seleccionado';
@override
String get availableProfiles => 'Perfiles disponibles';
}
/// The translations for Chinese, as used in Taiwan (`zh_TW`).