using System;

namespace SharpQuake
{
	internal abstract class MenuBase
	{
		public static MenuBase CurrentMenu
		{
			get
			{
				return MenuBase._CurrentMenu;
			}
		}

		public int Cursor
		{
			get
			{
				return this._Cursor;
			}
		}

		public static void Hide()
		{
			Key.Destination = keydest_t.key_game;
			MenuBase._CurrentMenu = null;
		}

		public virtual void Show()
		{
			menu.EnterSound = true;
			Key.Destination = keydest_t.key_menu;
			MenuBase._CurrentMenu = this;
		}

		public abstract void KeyEvent(int key);

		public abstract void Draw();

		public static readonly MenuBase MainMenu = new MainMenu();

		public static readonly MenuBase SinglePlayerMenu = new SinglePlayerMenu();

		public static readonly MenuBase MultiPlayerMenu = new MultiPleerMenu();

		public static readonly MenuBase OptionsMenu = new OptionsMenu();

		public static readonly MenuBase HelpMenu = new HelpMenu();

		public static readonly MenuBase QuitMenu = new QuitMenu();

		public static readonly MenuBase LoadMenu = new LoadMenu();

		public static readonly MenuBase SaveMenu = new SaveMenu();

		public static readonly MenuBase KeysMenu = new KeysMenu();

		public static readonly MenuBase LanConfigMenu = new LanConfigMenu();

		public static readonly MenuBase SetupMenu = new SetupMenu();

		public static readonly MenuBase GameOptionsMenu = new GameOptionsMenu();

		public static readonly MenuBase SearchMenu = new SearchMenu();

		public static readonly MenuBase ServerListMenu = new ServerListMenu();

		public static readonly MenuBase VideoMenu = new VideoMenu();

		protected int _Cursor;

		private static MenuBase _CurrentMenu;
	}
}
