Beispiel #1
0
        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");
                }
            }
        }