/
Vagabond132
/
TerrariaCourse
Обзор
Документация
Войти
/
Vagabond132
/
TerrariaCourse
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
Windows
ConsoleView/Menu/ViewMenuConsole.cs
93 строки
2 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; namespace ViewConsole.Menu { /// <summary> /// Отображение меню в консоли /// </summary> public class ViewMenuConsole : View.Menu.ViewMenu { /// <summary> /// Ширина /// </summary> public int WIDTH = Console.LargestWindowWidth/2; /// <summary> /// Высота /// </summary> public int HEIGHT = Console.LargestWindowHeight/2; /// <summary> /// Конструктор /// </summary> /// <param name="parSubMenuItem"></param> public ViewMenuConsole(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 = false; 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; int y = Y; foreach (View.Menu.ViewMenuItem elViewMenuItem in menu) { elViewMenuItem.X = X; elViewMenuItem.Y = y++; } } /// <summary> /// Нужна перерисовка /// </summary> protected override void NeedRedraw() { Draw(); } /// <summary> /// Отрисовка /// </summary> public override void Draw() { Console.Clear(); foreach (View.Menu.ViewMenuItem elViewMenuItem in Menu) { elViewMenuItem.Draw(); } } } }