public void StartGame(string playerId) { lock (_lock) { switch (State) { case GameState.IsRunning: throw new KickermatException("The Kickermat is already playing"); case GameState.IsPaused: throw new KickermatException("The current game is paused"); case GameState.NoGame: if (_playerService.Players.TryGetValue(playerId, out var player)) { CurrentPlayer = player; CurrentPlayer.Start(); State = GameState.IsRunning; return; } throw new KickermatException( $"Cannot start game: Player {playerId} does not exist"); } } }
public GameResponse(GameState state, IKickermatPlayer player) { State = state; if (player == null) { Player = null; } else { Player = new SerializedPlayer( player.GetType().FullName, player.Name, player.Description, player.Authors, player.Emoji); } }
public void StopGame() { lock (_lock) { switch (State) { case GameState.IsRunning: case GameState.IsPaused: CurrentPlayer.Stop(); State = GameState.NoGame; CurrentPlayer = null; return; case GameState.NoGame: throw new KickermatException( "There is no game running that could be stopped"); } } }