예제 #1
0
        public static int BetValueMenu(GameController controller, BetType type)
        {
            if (type == BetType.Numbers)
            {
                int    status  = 0;
                string message = "";
                while (status == 0)
                {
                    Console.Clear();
                    Header(controller);
                    Renderer.Line();
                    Console.WriteLine();
                    if (message != "")
                    {
                        Console.WriteLine(message);
                    }
                    Console.WriteLine("\tWhat number do you want to bet on? Type 'exit' to go back. \n");
                    Console.Write("\t>  ");
                    string result = Console.ReadLine();

                    if (result == "exit")
                    {
                        return(0);
                    }
                    if (result == "00")
                    {
                        result = "37";
                    }

                    bool isValid = false;

                    if (!isValid)
                    {
                        if (byte.TryParse(result, out byte value))
                        {
                            if (value >= 0 && value < 38)
                            {
                                isValid = true;
                            }
                        }
                    }

                    if (isValid)
                    {
                        Bet bet = new Bet();
                        bet.Payout         = controller.information.Information[type].Payout;
                        bet.WinningNumbers = new byte[] { byte.Parse(result) };
                        status             = BetAmountMenu(controller, bet);
                    }
                    message = $"Invalid input: {result}";
                }
                return(-1);
            }
            else
            {
                int           current = 0;
                List <string> options = new List <string>();
                foreach (byte[] set in controller.information.Information[type].WinningSets)
                {
                    string s = "\t * { ";
                    for (int i = 0; i < set.Length; i++)
                    {
                        s += i < set.Length - 1 ? set[i].ToString() + ", " : set[i].ToString() + " }";
                    }
                    options.Add(s);
                }

                int numberOfPages = options.Count / 5;
                int currentPage   = 0;
                do
                {
                    List <string> page = options.GetRange(currentPage * 5, Clamp(5, 0, options.Count - currentPage * 5));
                    if (currentPage < numberOfPages)
                    {
                        page.Add("\tNext Page");
                    }
                    if (currentPage > 0)
                    {
                        page.Add("\tPrevious Page");
                    }
                    page.Add("\tExit Menu");

                    current = Clamp(page.Count - 1, 0, current);

                    Header(controller);
                    Renderer.Line();
                    Console.WriteLine("");
                    DisplayMenu(page, current);
                    Renderer.Line();

                    var key = Console.ReadKey(true).Key;
                    switch (key)
                    {
                    case (ConsoleKey.UpArrow):
                        current = current <= 0 ? page.Count - 1 : --current;
                        break;

                    case (ConsoleKey.DownArrow):
                        current = current >= page.Count - 1 ? 0 : ++current;
                        break;

                    case (ConsoleKey.Enter):
                        switch (page[current])
                        {
                        case "\tNext Page":
                            currentPage++;
                            break;

                        case "\tPrevious Page":
                            currentPage--;
                            break;

                        case "\tExit Menu":
                            current = -1;
                            break;

                        default:
                            Bet bet = new Bet();
                            bet.Payout         = controller.information.Information[type].Payout;
                            bet.WinningNumbers = controller.information.Information[type].WinningSets[currentPage * 5 + current];
                            BetAmountMenu(controller, bet);
                            return(-1);
                        }
                        break;

                    default:
                        break;
                    }
                } while (current >= 0);
            }
            return(0);
        }
예제 #2
0
        public static void BetMenu(GameController controller)
        {
            int           current = 0;
            List <string> options = new List <string>();

            foreach (string type in Enum.GetNames(typeof(BetType)))
            {
                options.Add("\t* " + type);
            }

            int numberOfPages = options.Count / 5;
            int currentPage   = 0;

            do
            {
                List <string> page = options.GetRange(currentPage * 5, Clamp(5, 0, options.Count - currentPage * 5));
                if (currentPage < numberOfPages)
                {
                    page.Add("\tNext Page");
                }
                if (currentPage > 0)
                {
                    page.Add("\tPrevious Page");
                }
                page.Add("\tExit Menu");

                Header(controller);
                Renderer.Line();
                Console.WriteLine("");
                DisplayMenu(page, current);
                Renderer.Line();

                var key = Console.ReadKey(true).Key;
                switch (key)
                {
                case (ConsoleKey.UpArrow):
                    current = current <= 0 ? page.Count - 1 : --current;
                    break;

                case (ConsoleKey.DownArrow):
                    current = current >= page.Count - 1 ? 0 : ++current;
                    break;

                case (ConsoleKey.Enter):
                    switch (page[current])
                    {
                    case "\tNext Page":
                        currentPage++;
                        break;

                    case "\tPrevious Page":
                        currentPage--;
                        break;

                    case "\tExit Menu":
                        current = -1;
                        break;

                    default:
                        string  result = page[current].Trim().Substring(2);
                        BetType bet    = (BetType)Enum.Parse(typeof(BetType), result);
                        current = BetValueMenu(controller, bet);
                        break;
                    }
                    break;

                default:
                    break;
                }
            } while (current >= 0);
        }