using Model; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp { internal class MenuManager { public DataManager DataManager { get; private set; } public Stack MenuCallStack { get; set; } public MenuManager(DataManager dataManager, Menu.IMenu firstMenu) { DataManager = dataManager; MenuCallStack = new Stack(); MenuCallStack.Push(firstMenu); } public void Loop() { ConsoleKeyInfo cki; Menu.IMenu menuOnHead; do { menuOnHead = MenuCallStack.Peek(); menuOnHead.Update(); menuOnHead.Display(); cki = Console.ReadKey(true); switch (cki.Key) { case ConsoleKey.DownArrow: menuOnHead.SelectNext(); break; case ConsoleKey.UpArrow: menuOnHead.SelectPrevious(); break; case ConsoleKey.Enter: Menu.IMenu? retMenu = menuOnHead.Return(); if (retMenu is null) MenuCallStack.Pop(); else MenuCallStack.Push(retMenu); break; case ConsoleKey.LeftArrow: MenuCallStack.Pop(); break; default: menuOnHead.WriteMenuMode(cki); break; } } while (MenuCallStack.Count > 0); } } }