Ejemplo n.º 1
0
        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;
            }
        }