static ButtonInConsoleSetter[] SetControl(string name, KeyboardMenu <ButtonInConsole> menu, ConsolePrintMenu printer, string[] buttonsName, needOption[] buttonsOptions) { if (buttonsName.Length != buttonsOptions.Length) { throw new Exception(); } var buttons = new ButtonInConsoleSetter[buttonsName.Length]; for (int i = 0; i < buttons.Length; i++) { buttons[i] = new ButtonInConsoleSetter(printer.Width - 10, 1, printer, SignConsole.GetSignConsoles(buttonsName[i])); printer.Register((5, 8 + i * 2), buttons[i], buttons[i].GetCoordinates()); menu.AddLastButton(buttons[i]); var option = buttonsOptions[i]; buttons[i].IsPressed += () => { var newKey = Console.ReadKey(true); KeyPress.Remove(name, KeyPress.GetKey(name, Keys[option])); KeyPress.Reset(name, newKey.Key, Keys[option]); setValue(); }; } setValue(); void setValue() { for (int i = 0; i < buttons.Length; i++) { buttons[i].Value = SignConsole.GetSignConsoles(KeyPress.GetKey(name, Keys[buttonsOptions[i]]).ToString()); } } return(buttons); }
static void SnakeSettings(IDrawningRectangle <SignConsole> location, Action startWithClose, bool clear = false) { var menu = new KeyboardMenu <ButtonInConsole>("Snake Settings"); var sattingsMenu = new ConsolePrintMenu(location.Width, location.Height, location, menu); location.Register((0, 0), sattingsMenu, sattingsMenu.GetCoordinates()); var printer = new BigPixelPrint(sattingsMenu.Width, 5, sattingsMenu, letters); sattingsMenu.Register((0, 1), printer, printer.GetCoordinates()); sattingsMenu.SetWriter(printer); if (clear) { sattingsMenu.Fill(new SignConsole(' ')); } var buttons = SetControl("Snake", menu, sattingsMenu, new string[] { "Snake Up", "Snake Down", "Snake Left", "Snake Right", "Second Snake Up", "Second Snake Down", "Second Snake Left", "Second Snake Right" }, new needOption[] { needOption.snakeUp, needOption.snakeDown, needOption.snakeLeft, needOption.snakeRigh, needOption.secondSnakeUp, needOption.secondSnakeDown, needOption.secondSnakeLeft, needOption.secondSnakeRigh }); var exit = new ButtonInConsoleSetter(6, 1, sattingsMenu, SignConsole.GetSignConsoles("Exit")); sattingsMenu.Register((5, 9 + buttons.Length * 2), exit, exit.GetCoordinates()); menu.AddLastButton(exit); exit.IsPressed += () => { sattingsMenu.Close(); location.CancelRegistration(sattingsMenu); MenuKeyClose(); startWithClose?.Invoke(); }; sattingsMenu.Load(); MenuKeySet(menu); }
static void CommonSettings(IDrawningRectangle <SignConsole> location, Action startWithClose) { var menu = new KeyboardMenu <ButtonInConsole>("Settings"); var sattingsMenu = new ConsolePrintMenu(location.Width, location.Height, location, menu); location.Register((0, 0), sattingsMenu, sattingsMenu.GetCoordinates()); var printer = new BigPixelPrint(sattingsMenu.Width, 5, sattingsMenu, letters); sattingsMenu.Register((0, 1), printer, printer.GetCoordinates()); sattingsMenu.SetWriter(printer); var buttons = SetControl("Menu", menu, sattingsMenu, new string[] { "Menu Up", "Menu Down", "Menu Select" }, new needOption[] { needOption.menuUp, needOption.menuDown, needOption.menuPress }); var b4 = new ButtonInConsole(6, 1, sattingsMenu, SignConsole.GetSignConsoles("Exit")); sattingsMenu.Register((5, 9 + buttons.Length * 2), b4, b4.GetCoordinates()); menu.AddLastButton(b4); b4.IsPressed += () => { sattingsMenu.Close(); location.CancelRegistration(sattingsMenu); MenuKeyClose(); startWithClose?.Invoke(); }; sattingsMenu.Load(); MenuKeySet(menu); }
static ButtonInConsoleSetter[] SetMobe(KeyboardMenu <ButtonInConsole> menu, ConsolePrintMenu printer, string[] buttonsName) { var buttons = new ButtonInConsoleSetter[buttonsName.Length]; for (int i = 0; i < buttons.Length; i++) { buttons[i] = new ButtonInConsoleSetter(printer.Width - 10, 1, printer, SignConsole.GetSignConsoles(buttonsName[i])); printer.Register((5, 8 + i * 2), buttons[i], buttons[i].GetCoordinates()); menu.AddLastButton(buttons[i]); } return(buttons); }
static ButtonInConsole[] MenuInicialisation(KeyboardMenu <ButtonInConsole> menu, IDrawningRectangle <SignConsole> menuPrinter, string[] buttonsName) { var buttons = new ButtonInConsole[buttonsName.Length]; for (int i = 0; i < buttons.Length; i++) { buttons[i] = new ButtonInConsole(menuPrinter.Width - 10, 1, menuPrinter, SignConsole.GetSignConsoles(buttonsName[i])); menuPrinter.Register((5, 8 + i * 2), buttons[i], buttons[i].GetCoordinates()); menu.AddLastButton(buttons[i]); } return(buttons); }
static void SnakeMode(IDrawningRectangle <SignConsole> location, Action startWithClose, SnakeSettings settings) { var menu = new KeyboardMenu <ButtonInConsole>("Snake Mode"); var modeMenu = new ConsolePrintMenu(location.Width, location.Height, location, menu); location.Register((0, 0), modeMenu, modeMenu.GetCoordinates()); var printer = new BigPixelPrint(modeMenu.Width, 5, modeMenu, letters); modeMenu.Register((0, 1), printer, printer.GetCoordinates()); modeMenu.SetWriter(printer); void act() { modeMenu.Load(); MenuKeySet(menu, new bool[] { false, false, false }); } act(); var buttons = SetMobe(menu, modeMenu, new string[] { "Start speed", "Acceleration", "Multiplayer", "Special berries", "Few special berries " }); buttons[0].Value = SignConsole.GetSignConsoles(settings.StartSpeed.ToString()); buttons[1].Value = SignConsole.GetSignConsoles(settings.Acceleration.ToString()); buttons[2].Value = SignConsole.GetSignConsoles(settings.Multy.ToString()); buttons[3].Value = SignConsole.GetSignConsoles(settings.Event.ToString()); buttons[4].Value = SignConsole.GetSignConsoles(settings.EventMulty.ToString()); buttons[0].IsPressed += () => { settings.StartSpeed = (SnakeStartSpeed)EnumValues.Next(settings.StartSpeed); buttons[0].Value = SignConsole.GetSignConsoles(settings.StartSpeed.ToString()); }; buttons[1].IsPressed += () => { settings.Acceleration = (SnakeAcceleration)EnumValues.Next(settings.Acceleration); buttons[1].Value = SignConsole.GetSignConsoles(settings.Acceleration.ToString()); }; buttons[2].IsPressed += () => { settings.Multy = !settings.Multy; buttons[2].Value = SignConsole.GetSignConsoles(settings.Multy.ToString()); }; buttons[3].IsPressed += () => { settings.Event = !settings.Event; buttons[3].Value = SignConsole.GetSignConsoles(settings.Event.ToString()); }; buttons[4].IsPressed += () => { settings.EventMulty = !settings.EventMulty; buttons[4].Value = SignConsole.GetSignConsoles(settings.EventMulty.ToString()); }; var exit = new ButtonInConsoleSetter(6, 1, modeMenu, SignConsole.GetSignConsoles("Exit")); modeMenu.Register((5, 8 + buttons.Length * 2), exit, exit.GetCoordinates()); menu.AddLastButton(exit); exit.IsPressed += () => { modeMenu.Close(); location.CancelRegistration(modeMenu); MenuKeyClose(); startWithClose?.Invoke(); }; modeMenu.Load(); }