using System;
using System.Threading;
namespace ConsoleMenu
{
enum MenuOptions { Play = 0, Credits, Exit }
class Menu
{
public MenuOptions SelectedItem { get; set; }
public const string menuText = "{0,-3}Play\n{1,-3}Credits\n{2,-3}Exit";
public Menu()
{
SelectedItem = MenuOptions.Play;
}
public MenuOptions ShowMenu()
{
Console.CursorVisible = false;
ConsoleKeyInfo key;
SelectedItem = MenuOptions.Play;
do
{
Console.Clear();
Console.WriteLine(menuText,
GetPrefix(SelectedItem == MenuOptions.Play),
GetPrefix(SelectedItem == MenuOptions.Credits),
GetPrefix(SelectedItem == MenuOptions.Exit));
key = Console.ReadKey();
if (key.Key == ConsoleKey.UpArrow)
SelectedItem = MenuUp(SelectedItem);
else if (key.Key == ConsoleKey.DownArrow)
SelectedItem = MenuDown(SelectedItem);
} while (key.Key != ConsoleKey.Enter);
Console.CursorVisible = true;
return SelectedItem;
}
public string GetPrefix(bool selected)
{
return selected ? ">" : "";
}
public MenuOptions MenuUp(MenuOptions current)
{
if (current == MenuOptions.Play)
return MenuOptions.Exit;
else return current - 1;
}
public MenuOptions MenuDown(MenuOptions current)
{
if (current == MenuOptions.Exit)
return MenuOptions.Play;
else return current + 1;
}
}
}