/
Vagabond132
/
TerrariaCourse
Обзор
Документация
Войти
/
Vagabond132
/
TerrariaCourse
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
Windows
ConsoleView/Menu/ConsoleInputNameView.cs
123 строки
4 KB
Vagabond132
Комментарии добавлены
12 янв 2025, 15:30
12 янв 2025, 15:30
0078286
Код
Авторство
О чём код?
using Model.Menu; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using View.Menu; using ViewConsole.Menu; namespace ConsoleView.Menu { /// <summary> /// Контроллер ввода имени в консоли /// </summary> public class ConsoleInputNameView : ViewMenu { /// <summary> /// Ширина /// </summary> public int WIDTH = Console.LargestWindowWidth / 2; /// <summary> /// Высота /// </summary> public int HEIGHT = Console.LargestWindowHeight / 2; /// <summary> /// Контроллер /// </summary> /// <param name="parSubMenuItem">подменю</param> public ConsoleInputNameView(Model.Menu.Menu parSubMenuItem) : base(parSubMenuItem) { Init(); Draw(); } /// <summary> /// Создание подменю /// </summary> /// <param name="parMenuItem"></param> /// <returns></returns> protected override ViewMenuItem CreateItem(MenuItem parMenuItem) { if (parMenuItem is Model.Menu.SubMenuItem) return new ViewSubMenuItemConsole((Model.Menu.SubMenuItem)parMenuItem); else if (parMenuItem is Model.Menu.MenuItem) return new ViewMenuItemConsole(parMenuItem); return null; } /// <summary> /// Инициализация /// </summary> private void Init() { Console.WindowHeight = HEIGHT; Console.WindowWidth = WIDTH; Console.SetBufferSize(WIDTH, HEIGHT); Console.CursorVisible = true; View.Menu.ViewMenuItem[] menu = Menu; Height = menu.Length; Width = menu.Max((x) => x.Width); X = Console.WindowWidth / 2 - Width / 2; Y = Console.WindowHeight / 2 - Height / 2 + 10; int y = Y; foreach (View.Menu.ViewMenuItem elViewMenuItem in menu) { elViewMenuItem.X = X; elViewMenuItem.Y = y++; } } /// <summary> /// Нарисовать /// </summary> /// <param name="playerName"></param> private void DrawPrompt(string playerName) { Console.SetCursorPosition(0, 0); Console.Clear(); Console.WriteLine(new string('=', Console.WindowWidth)); Console.WriteLine(); Console.WriteLine(new string(' ', Console.WindowWidth / 2 - "ВВОД ИМЕНИ ИГРОКА".Length / 2) + "ВВОД ИМЕНИ ИГРОКА"); Console.WriteLine(); Console.WriteLine("Введите ваше имя и нажмите Enter для завершения:"); Console.WriteLine(); Console.WriteLine(playerName); Console.WriteLine(); Console.WriteLine(new string('=', Console.WindowWidth)); } /// <summary> /// Обновить имя игрока /// </summary> /// <param name="playerName"></param> public void UpdatePlayerName(string playerName) { DrawPrompt(playerName); foreach (View.Menu.ViewMenuItem elViewMenuItem in Menu) { elViewMenuItem.Draw(); } } /// <summary> /// Нужна перерисовка /// </summary> protected override void NeedRedraw() { Draw(); } /// <summary> /// Отрисовка /// </summary> public override void Draw() { Console.Clear(); DrawPrompt(string.Empty); foreach (View.Menu.ViewMenuItem elViewMenuItem in Menu) { elViewMenuItem.Draw(); } } } }