示例#1
0
        public int SetUpPlayers()
        {
            var userInteraction = new UserInteractionBuilder <int>()
                                  .Request
                                      ("How many players?")
                                  .ResponseInterpretations
                                      (new ResponseInterpretation <int>("default", vp => ValidateNumberOfPlayers(vp)))
                                  .Build();

            return(HandleResponse(userInteraction));
        }
示例#2
0
        public Deployment GetArmyTransfer(Deployment deployment)
        {
            var userInteraction = new UserInteractionBuilder <Deployment>()
                                  .Request("How many armies do you wish to transfer?")
                                  .ResponseInterpretations(
                new ResponseInterpretation <Deployment>("default", vp => ValidateArmyTransfer(vp)))
                                  .Deployment(deployment)
                                  .Build();

            return(HandleResponse(userInteraction));
        }
示例#3
0
        private List <Card> TradeCards(List <Card> cards)
        {
            var userInteraction = new UserInteractionBuilder <List <Card> >()
                                  .Request("Select card IDs for trade, separated by a comma")
                                  .ResponseInterpretations(
                new ResponseInterpretation <List <Card> >("q", vp => cards.Count >= 5 ? ProhibitQuit(vp) : Quit(vp)),
                new ResponseInterpretation <List <Card> >("default", vp => ValidateCardTrade(vp)))
                                  .Cards(cards)
                                  .Build();

            return(HandleResponse(userInteraction));
        }
示例#4
0
        private bool GetDecisionToTrade()
        {
            var userInteraction = new UserInteractionBuilder <bool>()
                                  .Request(
                "Trade:",
                "Press 'y' to trade or 'n' to skip")
                                  .ResponseInterpretations(
                new ResponseInterpretation <bool>("y", Accept),
                new ResponseInterpretation <bool>("n", Decline),
                new ResponseInterpretation <bool>("default", ResponseNotRecognised))
                                  .Build();

            return(HandleResponse(userInteraction));
        }
示例#5
0
        public Deployment GetFortificationParameters(Player player, CountryInfo[] countries)
        {
            var userInteraction = new UserInteractionBuilder <Deployment>()
                                  .Request(
                "Fortify:",
                "- [<x> armies from <country_A> to <country_B>]",
                "- [q]: to skip")
                                  .ResponseInterpretations(
                new ResponseInterpretation <Deployment>("q", Quit),
                new ResponseInterpretation <Deployment>("default", vp => ValidateFortificationParameters(vp)))
                                  .Player(player)
                                  .Countries(countries)
                                  .Build();

            return(HandleResponse(userInteraction));
        }
示例#6
0
        public Deployment GetAttackParameters(Player player, CountryInfo[] countries, Deployment previousAttackParameters)
        {
            var userInteraction = new UserInteractionBuilder <Deployment>()
                                  .Request(
                "Attack:",
                "- [Enter]: continue with same attack parameters",
                "- [<x> armies from <country_A> to <country_B>]",
                "- [q]: to skip")
                                  .ResponseInterpretations(
                new ResponseInterpretation <Deployment>("q", Quit),
                new ResponseInterpretation <Deployment>("", vp => ValidatePreviousAttackParameters(vp)),
                new ResponseInterpretation <Deployment>("default", vp => ValidateNewAttackParameters(vp)))
                                  .Player(player)
                                  .Countries(countries)
                                  .Deployment(previousAttackParameters)
                                  .Build();

            return(HandleResponse(userInteraction));
        }
示例#7
0
        private bool GetDecisionToView(List <Card> cards)
        {
            if (!cards.Any())
            {
                return(false);
            }

            var userInteraction = new UserInteractionBuilder <bool>()
                                  .Request(
                "View cards:",
                "Press 'y' to view or 'n' to skip")
                                  .ResponseInterpretations(
                new ResponseInterpretation <bool>("y", Accept),
                new ResponseInterpretation <bool>("n", Decline),
                new ResponseInterpretation <bool>("default", ResponseNotRecognised))
                                  .Cards(cards)
                                  .Build();

            return(HandleResponse(userInteraction));
        }