public StartMenu(Vector2 position, MenuAction[] actions, float spacing)
            : base(position, actions)
        {
            MenuEntry play = new MenuEntry(
                "Play",
                new MenuAction[]
                {
                    new MenuAction(ActionType.Select, new StartGameDelegate())
                },
                position);

            MenuEntry quit = new MenuEntry(
                "Quit",
                new MenuAction[]
                {
                    new MenuAction(ActionType.Select, new QuitGameDeleage())
                },
                position + new Vector2(0, spacing));

            play.UpperMenu = quit;
            play.LowerMenu = quit;

            quit.UpperMenu = play;
            quit.LowerMenu = play;

            this.Add(play);
            this.Add(quit);
        }
        public GameOverMenu(Vector2 position, MenuAction[] actions, float spacing)
            : base(position, actions)
        {
            MenuEntry tryAgain = new MenuEntry(
                "Try Again",
                new MenuAction[]
                {
                    new MenuAction(ActionType.Select, new GameOverDelegate())
                },
                position);

            MenuEntry quit = new MenuEntry(
                "Quit",
                new MenuAction[]
                {
                    new MenuAction(ActionType.Select, new QuitGameDeleage())
                },
                position + new Vector2(0, spacing));

            quit.UpperMenu = tryAgain;
            quit.LowerMenu = tryAgain;

            tryAgain.UpperMenu = quit;
            tryAgain.LowerMenu = quit;

            this.Add(tryAgain);
            this.Add(quit);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="PauseMenu"/> class.
        /// </summary>
        /// <param name="position">The position.</param>
        /// <param name="actions">The actions.</param>
        /// <param name="spacing">The spacing.</param>
        public PauseMenu(Vector2 position, MenuAction[] actions, float spacing)
            : base(position, actions)
        {
            MenuEntry resume = new MenuEntry(
                "Resume",
                new MenuAction[]
                {
                    new MenuAction(ActionType.Select, new QuitTopDelegate())
                },
                position);

            MenuEntry quit = new MenuEntry(
                "Quit",
                new MenuAction[]
                {
                    new MenuAction(ActionType.Select, new QuitGameDeleage())
                },
                position + new Vector2(0, spacing));

            resume.UpperMenu = quit;
            resume.LowerMenu = quit;

            quit.UpperMenu = resume;
            quit.LowerMenu = resume;

            this.Add(resume);
            this.Add(quit);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="MenuEntry"/> class.
        /// </summary>
        /// <param name="text">The text to display.</param>
        /// <param name="actions">The this.actions associated with this menu entry. For example,
        /// one action might be pressing "A" to select the entry. Adding
        /// an action of Left, Right, Up, or Down will overwrite the
        /// menu entry navigation.</param>
        /// <param name="position">The this.position of the image.</param>
        public MenuEntry(string text, MenuAction[] actions, Vector2 position)
        {
            this.text = text;
            this.actions = actions;

            this.position = position;
            this.origin = Drawer.font.MeasureString(text) / 2f;
        }