AIsOfCatan.HumanAgent.PlayDevelopmentCard C# (CSharp) Method

PlayDevelopmentCard() private method

private PlayDevelopmentCard ( IGameState state, IGameActions actions ) : IGameState
state IGameState
actions IGameActions
return IGameState
        private IGameState PlayDevelopmentCard(IGameState state, IGameActions actions)
        {
            Console.WriteLine("Which development card do you wish to play:");
            Console.WriteLine("0) None");
            int i = 1;
            var cards = new Dictionary<int, DevelopmentCard>();
            foreach (var c in state.GetOwnDevelopmentCards().Where(c => c != DevelopmentCard.VictoryPoint))
            {
                Console.WriteLine(i + ") " + c);
                cards.Add(i, c);
                i++;
            }
            int selection = int.Parse(Console.ReadLine() ?? "0");
            if (selection == 0) return null;
            Console.WriteLine("You played the card " + cards[selection]);
            hasPlayedDevCard = true;
            switch (cards[selection])
            {
                case DevelopmentCard.Knight:
                    return actions.PlayKnight();
                case DevelopmentCard.Monopoly:
                    Console.WriteLine("Choose the resource type to get monopoly on");
                    return actions.PlayMonopoly(selectResource());
                case DevelopmentCard.RoadBuilding:
                    Console.WriteLine("Decide where to build the two roads");
                    var road1 = getRoadPosition();
                    var road2 = getRoadPosition();
                    return actions.PlayRoadBuilding(road1, road2);
                case DevelopmentCard.YearOfPlenty:
                    Console.WriteLine("Choose which two resources you want to draw");
                    return actions.PlayYearOfPlenty(selectResource(), selectResource());
            }
            return null;
        }