/
Vagabond132
/
TerrariaCourse
Обзор
Документация
Войти
/
Vagabond132
/
TerrariaCourse
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
Windows
ConsoleView/Menu/ViewRecordsConsole.cs
123 строки
3 KB
Vagabond132
Комментарии добавлены
12 янв 2025, 15:30
12 янв 2025, 15:30
0078286
Код
Авторство
О чём код?
using Model.Menu; using Model.Utils; 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 ViewRecordsConsole : ViewMenu { /// <summary> /// Ширина /// </summary> public int WIDTH = 110; /// <summary> /// Высота /// </summary> public int HEIGHT = Console.LargestWindowHeight / 2; /// <summary> /// Конструкктор /// </summary> /// <param name="parSubMenuItem">подменю</param> public ViewRecordsConsole(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 + 10; 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> private void DrawRecords() { Console.Clear(); List<PlayerScore> playerScores = ScoreManager.Instance.GetTopScores(); // Таблица рекордов Console.WriteLine(); Console.WriteLine(new string(' ', Console.WindowWidth / 2 - "ТАБЛИЦА РЕКОРДОВ".Length / 2) + "ТАБЛИЦА РЕКОРДОВ"); Console.WriteLine(); string header = $"{"Имя игрока",-20}{"Очки",10}"; Console.WriteLine(header); Console.WriteLine(new string('-', Console.WindowWidth)); foreach (var score in playerScores.OrderByDescending(s => s.Score)) { string row = $"{score.Name,-20}{score.Score,10}"; Console.WriteLine(row); } Console.WriteLine(); Console.WriteLine(new string('=', Console.WindowWidth)); } /// <summary> /// Отрисовка /// </summary> public override void Draw() { Console.Clear(); DrawRecords(); foreach (View.Menu.ViewMenuItem elViewMenuItem in Menu) { elViewMenuItem.Draw(); } } } }