Exemplo n.º 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");
                }
            }
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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");
                }
            }
        }