public MenuButton(Menu menu, int i, string t, Rectangle size)
 {
     sourceMenu = menu;
     id = i;
     text = t;
     dimensions = size;
 }
        private void createMainMenu()
        {
            mainMenu = new Menu(new Viewport(0, vBorder, width, height - 2 * vBorder));

            gameMusic.Stop();
            menuMusic.Play();

            string[] buttons = { "One Player", "Two Player", "Quit" };
            for(int i = 0; i < buttons.Length; i++) {
                int x = width / 2 - 128;
                int y = height / 2 + (i - buttons.Length / 2) * 72;
                mainMenu.controls.Add(new MenuButton(mainMenu, i, buttons[i], new Vector2(x, y)));
            }

            mainMenu.performEvent = delegate(int id) {
                switch(id) {
                    case 0:
                        saveData = new SaveData(numLevels);
                        saveData.readDataFromFile();
                        gameState = GameState.levelSelect;
                        break;
                    case 1:
                        battlefield = new Battlefield(levelData[rand.Next(levelData.length)], new Viewport(0, vBorder, width, height - 2 * vBorder), true);
                        gameState = GameState.inBattle;
                        break;
                    case 2:
                        Exit();
                        break;
                }
            };
        }
 public MenuButton(Menu menu, int i, string t, Vector2 pos)
     : this(menu, i, t, new Rectangle((int) pos.X, (int) pos.Y, 256, 64))
 {
 }
        private void createLevelSelectMenu()
        {
            levelMenu = new Menu(new Viewport(0, vBorder, width, height - 2 * vBorder));

            gameMusic.Stop();
            menuMusic.Play();

            levelMenu.controls.Add(new MenuButton(levelMenu, 0, "Back", new Vector2(width/2 - 288, height / 2 - vBorder + 64)));
            levelMenu.controls.Add(new MenuButton(levelMenu, 1, "Go!", new Vector2(width / 2 + 32, height / 2 - vBorder + 64)));
            levelMenu.performEvent = delegate(int id) {
                switch(id) {
                    case 0:
                        gameState = GameState.mainMenu;
                        break;
                    case 1:
                        battlefield = new Battlefield(levelData[selectedLevel], new Viewport(0, vBorder, width, height - 2 * vBorder));
                        if(selectedLevel == 0) tutorial = new Tutorial();
                        gameState = GameState.inBattle;
                        break;
                }
            };
        }