public ActionPanel(Rect actionPanelArea) : base(actionPanelArea) { AreaType = AreaUI.ActionPanel; xMenu = AreaRect.Left + 20; yMenu = AreaRect.Top + 1; DefaultMenuOptions = new ZMenu.Options { Mode = ZMenu.MenuMode.ShortkeysAndArrows, FrameSpacingHorizontal = 2, UseSelectedBackColor = true, ColorScheme = new ZMenu.ColorScheme{ FrameForeColor = Color.Green, CaptionBackColor = Color.DarkGreen, CaptionForeColor = Color.Yellow }, FrameOptions = new ZFrame.Options { FrameType = FrameType.Double, Width = 10, Height = 4, }, }; }
private static string MainMenu() { #region Menu initialization var nestedMenuOptions = new ZMenu.Options { Mode = ZMenu.MenuMode.ArrowsOnly, UseSelectedBackColor = true, FrameSpacingHorizontal = 1, FrameSpacingVertical = 0, }; var loadGameMenuItems = SaveLoad.GetSaveGames(); var exitFlag = false; var currentPosition = 0; #endregion while (!exitFlag) { #region Change current displayed options var languageMenuItems = new ZMenu.MenuItemList(); languageMenuItems.AddRange(GameConfig.Languages.Keys.Select(a => new ZMenu.MenuItem(a))); var difficultyItems = new ZMenu.MenuItemList((int)GameConfig.CurrentDifficulty); difficultyItems.AddRange(Enums.All_Difficulties.Select(a => new ZMenu.MenuItem(Lang["Difficulty_" + a.ToString()]))); var galaxySizeItems = new ZMenu.MenuItemList(GameConfig.CurrentGalaxySizeX-3); galaxySizeItems.AddRange(Enums.All_GalaxySizes.Select(a => new ZMenu.MenuItem(Lang["GalaxySize_" + a.ToString()]))); const int xPos = 30; ZColors.SetBackColor(Color.Black); ZOutput.Print(19, xPos, (Lang["StartMenu_Difficulty"] + ":").PadRight(17, ' '), Color.Magenta); ZOutput.Print(38, xPos, Lang["Difficulty_Short_" + GameConfig.CurrentDifficulty].PadRight(10, ' '), Color.White); ZOutput.Print(19, xPos+1, (Lang["StartMenu_GalaxySize"] + ":").PadRight(17, ' '), Color.Green); ZOutput.Print(38, xPos+1, GameConfig.CurrentGalaxySizeX + " x " + GameConfig.CurrentGalaxySizeY, Color.White); ZOutput.Print(19, xPos+2, (Lang["StartMenu_Language"] + ":").PadRight(17, ' '), Color.Magenta); ZOutput.Print(38, xPos+2, Lang["Common_CurrentLanguage"].PadRight(20, ' '), Color.White); #endregion #region Get Menu Result var menuResult = ZMenu.GetMenuResult(18, 6, new ZMenu.MenuItem(Lang["Common_YourAction"]) { Options = new ZMenu.Options { Mode = ZMenu.MenuMode.ShortkeysAndArrows, ItemSpacing = 2, FrameSpacingHorizontal = 3, FrameSpacingVertical = 2, UseSelectedBackColor = true, FrameOptions = new ZFrame.Options { FrameType = FrameType.Double }, }, ChildMenuItems = new ZMenu.MenuItemList(currentPosition) { new ZMenu.MenuItem { Caption = Lang["StartMenu_NewGame"] }, new ZMenu.MenuItem { Caption = Lang["StartMenu_LoadGame"], Options = nestedMenuOptions, ChildMenuItems = loadGameMenuItems, IsActive = loadGameMenuItems.Count > 0 }, new ZMenu.MenuItem { Caption = Lang["StartMenu_Difficulty"], Options = nestedMenuOptions, ChildMenuItems = difficultyItems }, new ZMenu.MenuItem { Caption = Lang["StartMenu_GalaxySize"], Options = nestedMenuOptions, ChildMenuItems = galaxySizeItems }, new ZMenu.MenuItem { Caption = Lang["StartMenu_Language"], Options = nestedMenuOptions, ChildMenuItems = languageMenuItems, IsActive = GameConfig.Languages.Count > 0 }, new ZMenu.MenuItem { Caption = Lang["Common_Quit"] } } }); #endregion #region Choose action if (menuResult.Index == -1) { menuResult.Text = Lang["Common_Quit"]; } var actions = new Dictionary<string, Action> { { Lang["StartMenu_NewGame"], () => { exitFlag = true; }}, { Lang["Difficulty_Easy"], () => { GameConfig.CurrentDifficulty = Difficulty.Easy; currentPosition = 2; }}, { Lang["Difficulty_Normal"], () => { GameConfig.CurrentDifficulty = Difficulty.Normal; currentPosition = 2; }}, { Lang["Difficulty_Hard"], () => { GameConfig.CurrentDifficulty = Difficulty.Hard; currentPosition = 2; }}, { Lang["GalaxySize_Small"], () => { GameConfig.CurrentGalaxySizeX = GameConfig.CurrentGalaxySizeY = 3; currentPosition = 3; }}, { Lang["GalaxySize_Normal"], () => { GameConfig.CurrentGalaxySizeX = GameConfig.CurrentGalaxySizeY = 4; currentPosition = 3; }}, { Lang["GalaxySize_Big"], () => { GameConfig.CurrentGalaxySizeX = GameConfig.CurrentGalaxySizeY = 5; currentPosition = 3; }}, { Lang["Common_Quit"], () => { ZConsoleMain.RestoreMode(); Environment.Exit(0); }} }; if (actions.ContainsKey(menuResult.Text)) actions[menuResult.Text](); else if (GameConfig.Languages.ContainsKey(menuResult.Text)) { GameConfig.Lang = GameConfig.Languages[menuResult.Text]; GameConfig.CurrentLanguageName = menuResult.Text; GameConfig.Apply_Languages(); currentPosition = 4; } else return menuResult.Text; #endregion } return null; }