/// <summary> /// Initializes a new instance of the <see cref="MenuScreen"/> class. /// </summary> /// <param name="title">The title.</param> /// <param name="parent">The parent.</param> public MenuScreen(String title, MenuScreen parent) { Title = title; Parent = parent; }
/// <summary> /// Adds the menu screen. /// </summary> /// <param name="screen">The screen.</param> public void AddMenuScreen(MenuScreen screen) { Screens.Add(screen); }
/// <summary> /// Updates the Entity. /// </summary> /// <param name="graphics">The graphics.</param> /// <param name="input">The input.</param> /// <param name="delta">The delta.</param> public void Update(GraphicsDevice graphics, Input input, long delta) { MenuScreen screen = Screens[SelectedMenuScreen]; int max = (Screens[SelectedMenuScreen] == Screens[MainMenuIndex]) ? screen.Elements.Count : screen.Elements.Count + 1; if (input.Down()) { if (_down == false) { _down = true; _menuMove.Play(); screen.SelectedIndex += 1; if (screen.SelectedIndex >= max) { screen.SelectedIndex = 0; } } } else { _down = false; } if (input.Up()) { if (_up == false) { _up = true; _menuMove.Play(); screen.SelectedIndex -= 1; if (screen.SelectedIndex < 0) { screen.SelectedIndex = max - 1; } } } else { _up = false; } if (input.Fire()) { if (_enter == false) { _enter = true; Action[] actions = screen.Elements.Values.ToArray(); if (screen.SelectedIndex == actions.Count()) { _menuBack.Play(); SelectedMenuScreen = screen.Parent == null ? MainMenuIndex : Screens.IndexOf(screen.Parent); } else { Action action = screen.Elements.Values.ToArray()[screen.SelectedIndex]; if (action != null) { _menuSelect.Play(); action(); } } } } else { _enter = false; } if (input.Escape()) { if (_escape == false) { _escape = true; if (screen.Parent != null) { _menuBack.Play(); SelectedMenuScreen = Screens.IndexOf(screen.Parent); } else if (screen != Screens[MainMenuIndex]) { _menuBack.Play(); SelectedMenuScreen = MainMenuIndex; } } } else { _escape = false; } }
/// <summary> /// Queries how wide the entry is, used for centering on the screen. /// </summary> public virtual int GetWidth(MenuScreen screen) { return((int)screen.ScreenManager.Font.MeasureString(Text).X); }
/// <summary> /// Queries how much space this menu entry requires. /// </summary> public virtual int GetHeight(MenuScreen screen) { return(screen.ScreenManager.Font.LineSpacing); }
/// <summary> /// Inits the menu. /// </summary> private void InitMenu() { var start = new MenuScreen("Asteroids", null); var options = new MenuScreen("Options", null); var debugger = new MenuScreen("Debug", options); var about = new MenuScreen("About", null); _pause = new MenuScreen("Paused", null); _gameOver = new MenuScreen("Game Over", null); var controls = new MenuScreen("Controls", null); var e = new Dictionary <string, Action> { { "On", () => { _debug = true; Circle.Texture = _collisionTexture; _menu.SelectedMenuScreen = _menu.Screens.IndexOf(options); } }, { "Off", () => { _debug = false; Circle.Texture = null; _menu.SelectedMenuScreen = _menu.Screens.IndexOf(options); } } }; debugger.Elements = e; e = new Dictionary <string, Action> { { "Start Game", NewGame }, { "Options", () => { _menu.SelectedMenuScreen = _menu.Screens.IndexOf(options); } }, { "About", () => { _menu.SelectedMenuScreen = _menu.Screens.IndexOf(about); } }, { "Controls", () => { _menu.SelectedMenuScreen = _menu.Screens.IndexOf(controls); } }, { "Quit", Exit } }; start.Elements = e; e = new Dictionary <string, Action> { { "Resume", () => { _running = true; } }, { "New Game", NewGame }, { "Options", () => { _menu.SelectedMenuScreen = _menu.Screens.IndexOf(options); } }, { "About", () => { _menu.SelectedMenuScreen = _menu.Screens.IndexOf(about); } }, { "Controls", () => { _menu.SelectedMenuScreen = _menu.Screens.IndexOf(controls); } }, { "Quit", Exit } }; _pause.Elements = e; e = new Dictionary <string, Action> { { "New game", NewGame }, { "Quit", Exit } }; _gameOver.Elements = e; e = new Dictionary <string, Action> { { "Samuel Lewis & Thomas Kempton", null }, { "Simulation and Game Development", null }, { "Assignment #3 - SET Asteroids", null } }; about.Elements = e; e = new Dictionary <string, Action> { { "Debug", () => { debugger.SelectedIndex = _debug ? 0 : 1; _menu.SelectedMenuScreen = _menu.Screens.IndexOf(debugger); } } }; options.Elements = e; e = new Dictionary <string, Action> { { "Fire/Select Space/RT", null }, { "Pause/Back Esc/Back", null }, { "Thrusters Up/D-pad up", null }, { "Up Left/D-pad Up", null }, { "Down Left/D-pad Down", null }, { "Left Left/D-pad left", null }, { "Right Right/D-pad right", null } }; controls.Elements = e; _menu.AddMenuScreen(start); _menu.AddMenuScreen(_gameOver); _menu.AddMenuScreen(options); _menu.AddMenuScreen(debugger); _menu.AddMenuScreen(about); _menu.AddMenuScreen(_pause); _menu.AddMenuScreen(controls); _menu.SelectedMenuScreen = _menu.Screens.IndexOf(start); _menu.MainMenuIndex = _menu.Screens.IndexOf(start); }