public static void ChangeRuleValue(RuleType ruleType) { var rule = ActiveGame.GetRule(ruleType); var menu = new Menu { Title = $"Change rule {rule.RuleType}", MenuTypes = new List <MenuType> { MenuType.Input, MenuType.RuleIntInput }, MenuItems = new List <MenuItem> { new MenuItem { Description = $"Current value: {rule.Value}" }, new MenuItem { Description = $"Enter a value between {rule.MinVal} and {rule.MaxVal}" } } }; while (true) { // Run menu, ask user for integer input var input = menu.RunMenu(); // User entered exit shortcut if (input.ToUpper() == MenuInitializers.GoBackItem.Shortcut) { return; } // Attempt to parse input as int if (string.IsNullOrEmpty(input) || !int.TryParse(input, out var value)) { Console.WriteLine("Value not an integer!"); Console.ReadKey(true); continue; } if (!ActiveGame.TryChangeRule(ruleType, value)) { Console.WriteLine("Value not in range!"); Console.ReadKey(true); continue; } Console.WriteLine("Rule value changed!"); Console.ReadKey(true); break; } }