private void SelectLanguage()
        {
            // Select Language
            var languages = Language.GetAll()
                            .Where(l => !l.IsDebug)
                            .OrderBy(l => (l.CustomFont != null && l.CustomFont != Game.Language.CustomFont) ? l.EnglishName : l.Name)
                            .ToArray();

            var titles = languages
                         .Select(l => string.Format("{0}", (l.CustomFont != null && l.CustomFont != Game.Language.CustomFont) ? l.EnglishName : l.Name))
                         .ToList();

            if (App.Steam)
            {
                titles.Add(Game.Language.Translate("menus.campaign_select.open_steam_workshop"));
            }
            //            else
            //          {
            //            titles.Add(Game.Language.Translate("menus.campaign_select.open_mod_directory"));
            //      }

            var dialog = DialogBox.CreateMenuBox(
                Game.Language.Translate("menus.select_language.title"),
                titles.ToArray(),
                false
                );

            dialog.OnClosed += delegate(object sender2, DialogBoxClosedEventArgs e2)
            {
                if (e2.Result >= 0 && e2.Result < languages.Length)
                {
                    var language = languages[e2.Result];
                    if (language.Code != Game.Language.Code)
                    {
                        Game.User.Settings.Language = language.Code;
                        Game.User.Settings.Save();
                        Game.SelectLanguage();
                        WipeToState(new MainOptionsState(Game));
                    }
                }
                else if (e2.Result == languages.Length)
                {
                    if (App.Steam)
                    {
                        Game.Network.OpenWorkshopHub(new string[] { "Localisation" });
                    }
                    else
                    {
                        Mods.InitLocalDirectory();
                        Game.Network.OpenFileBrowser(Path.Combine(App.SavePath, "mods"));
                    }
                }
            };
            ShowDialog(dialog);
        }
Beispiel #2
0
        private void ShowMenu()
        {
            var lang          = Game.Language;
            var options       = new List <string>();
            var optionActions = new List <Action>();

            if (Game.User.Progress.GetStatistic(Statistic.LevelsCompleted) > 0)
            {
                options.Add(lang.Translate("menus.main.continue_game"));
            }
            else
            {
                options.Add(lang.Translate("menus.main.new_game"));
            }
            optionActions.Add(ContinueGame);

            if (ArcadeUtils.IsArcadeUnlocked(Game.User.Progress))
            {
                options.Add(lang.Translate("menus.main.arcade"));
                optionActions.Add(Arcade);
            }

            options.Add(lang.Translate("menus.main.mod_editor"));
            optionActions.Add(ShowGamepadWarningThenModEditor);

            options.Add(lang.Translate("menus.main.options"));
            optionActions.Add(Options);

            options.Add(lang.Translate("menus.main.quit"));
            optionActions.Add(Quit);

            var dialog = DialogBox.CreateMenuBox(
                lang.Translate("menus.main.title"),
                options.ToArray(),
                false
                );

            dialog.OnClosed += delegate(object sender, DialogBoxClosedEventArgs e)
            {
                int index = e.Result;
                if (index >= 0 && index < optionActions.Count)
                {
                    optionActions[index].Invoke();
                }
                else
                {
                    GoBack();
                }
            };
            ShowDialog(dialog);
        }
Beispiel #3
0
        private void ShowPauseMenu()
        {
            // Regular pause menu
            var pauseMenu = DialogBox.CreateMenuBox(
                Game.Language.Translate("menus.pause.title"),
                new string[] {
                Game.Language.Translate("menus.pause.reset_level"),
                //Game.Language.Translate( "menus.pause.skip_level" ),
                Game.Language.Translate("menus.pause.go_back"),
            },
                false
                );

            pauseMenu.OnClosed += delegate(object sender, DialogBoxClosedEventArgs e)
            {
                switch (e.Result)
                {
                case 0:
                {
                    // Restart Level
                    Reset();
                    break;
                }

                //case 1:
                //{
                //    // Skip Level
                //    OnLevelCompleted( true, 0, 0 );
                //    break;
                //}
                //case 2:
                case 1:
                {
                    // Go Back
                    BackToMenu(m_playthrough.Level);
                    break;
                }
                }
            };
            ShowDialog(pauseMenu);
        }
Beispiel #4
0
        private void ModEditor()
        {
            var mods       = AllEditorMods();
            var sortedMods = mods.OrderBy(m => m.Title).ToArray();
            var titles     = sortedMods.Select(m => m.Title).ToList();

            titles.Add(Game.Language.Translate("menus.mod_select.create_new"));

            var dialog = DialogBox.CreateMenuBox(
                Game.Language.Translate("menus.mod_select.title"),
                titles.ToArray(),
                false
                );

            dialog.OnClosed += delegate(object sender, DialogBoxClosedEventArgs e)
            {
                if (e.Result < 0)
                {
                    // Go back
                    EnableGamepad = true;
                    ShowMenu();
                }
                else if (e.Result >= 0 && e.Result < mods.Count)
                {
                    // Select mod
                    var mod = sortedMods[e.Result];
                    EditMod(mod);
                }
                else if (e.Result == sortedMods.Length)
                {
                    // Create new
                    CreateMod();
                }
            };

            EnableGamepad = false;
            ShowDialog(dialog);
        }
Beispiel #5
0
        private void ShowPauseMenu()
        {
            // Editor pause menu
            string[] options = new string[] {
                Game.Language.Translate("menus.editor.show_guide"),
                Game.Language.Translate("menus.editor.capture_thumbnail"),
                Game.Language.Translate("menus.editor.edit_script"),
                Game.Language.Translate("menus.editor.reload"),
                Game.Language.Translate("menus.editor.go_back")
            };

            var pauseMenu = DialogBox.CreateMenuBox(Game.Language.Translate("menus.editor.title"), options, false);

            pauseMenu.OnClosed += delegate(object sender, DialogBoxClosedEventArgs e)
            {
                switch (e.Result)
                {
                case 0:
                {
                    // Show guide
                    ShowGuide();
                    break;
                }

                case 1:
                {
                    // Create thumbnail
                    if (m_modified)
                    {
                        var tempPath = SaveLevelTemporary();
                        CutToState(new ThumbnailState(Game, m_mod, m_campaign, m_levelIndex, tempPath, LevelSavePath));
                    }
                    else
                    {
                        CutToState(new ThumbnailState(Game, m_mod, m_campaign, m_levelIndex, LevelSavePath, LevelSavePath));
                    }
                    break;
                }

                case 2:
                {
                    // Edit Script
                    EditScript();
                    break;
                }

                case 3:
                {
                    // Reload level
                    ReloadLevel();
                    break;
                }

                case 4:
                {
                    // Back to Menu
                    if (m_modified)
                    {
                        // Modified, so prompt for save first
                        var promptMenu = DialogBox.CreateQueryBox(
                            Game.Screen,
                            Game.Language.Translate("menus.save_prompt.title"),
                            Game.Language.Translate("menus.save_prompt.info"),
                            new string[] {
                                Game.Language.Translate("menus.yes"),
                                Game.Language.Translate("menus.no"),
                            },
                            true
                            );
                        promptMenu.OnClosed += delegate(object sender2, DialogBoxClosedEventArgs e2)
                        {
                            switch (e2.Result)
                            {
                            case 0:
                            {
                                // YES
                                SaveLevel();
                                BackToMenu();
                                break;
                            }

                            case 1:
                            {
                                // NO
                                BackToMenu();
                                break;
                            }
                            }
                        };
                        ShowDialog(promptMenu);
                    }
                    else
                    {
                        // Unmodified, so don't prompt:
                        BackToMenu();
                    }
                    break;
                }
                }
            };
            ShowDialog(pauseMenu);
        }