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); }
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); }