/
Vagabond132
/
TerrariaCourse
Обзор
Документация
Войти
/
Vagabond132
/
TerrariaCourse
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
Windows
ConsoleController/Menu/ControllerInputNameConsole.cs
88 строк
2 KB
Vagabond132
Комментарии добавлены
12 янв 2025, 15:30
12 янв 2025, 15:30
0078286
Код
Авторство
О чём код?
using ConsoleController.Game; using ConsoleView.Menu; using Controller.Menu; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleController.Menu { /// <summary> /// Контроллер ввода имени в консоли /// </summary> public class ControllerInputNameConsole : ControllerMenu { /// <summary> /// Представление меню ввода /// </summary> private ConsoleInputNameView _viewMenu = null; /// <summary> /// Нужно выйти /// </summary> protected bool NeedExit { get; set; } = false; /// <summary> /// Имя игрока /// </summary> private string _playerName = ""; /// <summary> /// Конструкторо /// </summary> public ControllerInputNameConsole() { Menu = new Model.Menu.InputNameMenu(); _viewMenu = new ConsoleInputNameView(Menu); Menu[(int)Model.Menu.MenuMain.MenuItemCodes.New].Selected += () => { NeedExit = true; new ConsoleControllerGame(_playerName).Start(); }; Menu[(int)Model.Menu.MenuMain.MenuItemCodes.Main].Selected += () => { NeedExit = true; new ControllerMenuMainConsole().Start(); }; } /// <summary> /// Запуск /// </summary> public override void Start() { _playerName = string.Empty; do { ConsoleKeyInfo keyInfo = Console.ReadKey(intercept: true); switch (keyInfo.Key) { case ConsoleKey.UpArrow: Menu.FocusPrevious(); break; case ConsoleKey.DownArrow: Menu.FocusNext(); break; case ConsoleKey.Backspace: if (_playerName.Length > 0) { _playerName = _playerName.Substring(0, _playerName.Length - 1); } break; case ConsoleKey.Enter: //NeedExit = true; if (_playerName.Length > 0) { Menu.SelectFocusedItem(); } break; default: if (!char.IsControl(keyInfo.KeyChar)) { _playerName += keyInfo.KeyChar; } break; } _viewMenu.UpdatePlayerName(_playerName); } while (!NeedExit); //_playerName = playerName; } } }