コード例 #1
0
        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,
                    },
            };
        }
コード例 #2
0
        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;
        }