joinGame method

  1. @override
Future<String?> joinGame(
  1. PlayerID playerID,
  2. GameCode code,
  3. PlayerName name
)
override

Registers the client with the game server

Implementation

@override
Future<String?> joinGame(
    PlayerID playerID, GameCode code, PlayerName name) async {
  final backendReader = NoServerClient.games[code]!.container.read;

  final notifier = backendReader(BackendProviders.lobby.notifier);
  await Future.delayed(const Duration(microseconds: 1));
  notifier.addPlayer(Player(playerID, name: name));
  await Future.delayed(const Duration(microseconds: 1));

  final lobby = backendReader(BackendProviders.lobby);
  final config = lobby.config;
  final players = lobby.players;
  if (players.length == config.maxPlayers && config.autoStart) {
    notifier.start();
  }

  return name;
}