Beispiel #1
0
        private void CreateMod()
        {
            var textEntry = TextEntryDialogBox.Create(Game.Language.Translate("menus.name_mod_prompt.title"), SuggestModTitle(), "", Game.Screen.Width - 300.0f, new string[] {
                Game.Language.Translate("menus.ok"),
                Game.Language.Translate("menus.cancel")
            });

            textEntry.OnClosed += delegate(object sender2, DialogBoxClosedEventArgs e2)
            {
                if (e2.Result == 0)
                {
                    var title = (textEntry.EnteredText.Trim().Length > 0) ? textEntry.EnteredText.Trim() : "Untitled Mod";
                    var mod   = Mods.Create(title);
                    if (App.Steam)
                    {
                        mod.Author      = Game.Network.LocalUser.DisplayName;
                        mod.SteamUserID = Game.Network.LocalUser.ID;
                        mod.SaveInfo();
                    }
                    EditMod(mod);
                }
                else
                {
                    ModEditor();
                }
            };
            ShowDialog(textEntry);
        }
        private void RenameCampaign()
        {
            var textEntry = TextEntryDialogBox.Create(Game.Language.Translate("menus.name_campaign_prompt.title"), m_campaign.Title, "", Game.Screen.Width - 300.0f, new string[] {
                Game.Language.Translate("menus.ok"),
                Game.Language.Translate("menus.cancel")
            });

            textEntry.OnClosed += delegate(object sender2, DialogBoxClosedEventArgs e2)
            {
                if (e2.Result == 0)
                {
                    // Get the title
                    var title = (textEntry.EnteredText.Trim().Length > 0) ? textEntry.EnteredText.Trim() : "Untitled Campaign";

                    // Add the title to the campaign
                    var oldtitle    = m_campaign.Title;
                    var newCampaign = m_campaign.Copy();
                    newCampaign.Title = title;

                    // Save the campaign
                    if (m_mod != null)
                    {
                        var fullCampaignPath = Path.Combine(m_mod.Path, "assets/" + m_campaign.Path);
                        newCampaign.Save(fullCampaignPath);

                        // Rename the mod too if it has the same name
                        if (m_mod.Title == oldtitle)
                        {
                            m_mod.Title = title;
                            m_mod.SaveInfo();
                        }
                    }
                    else
                    {
                        var fullCampaignPath = Path.Combine(App.AssetPath, "main/" + m_campaign.Path);
                        newCampaign.Save(fullCampaignPath);
                    }

                    // Reload the campaign
                    Assets.Reload(m_campaign.Path);
                    Title = MouseButton.Left.GetPrompt() + " " + m_campaign.Title;
                }
            };
            ShowDialog(textEntry);
        }
        private void CreateCampaign()
        {
            string suggestedTitle = m_mod.Title;
            var    count          = m_campaigns.Count;

            if (count > 0)
            {
                suggestedTitle = suggestedTitle + " Act " + (count + 1);
            }

            var textEntry = TextEntryDialogBox.Create(Game.Language.Translate("menus.name_campaign_prompt.title"), suggestedTitle, "", Game.Screen.Width - 300.0f, new string[] {
                Game.Language.Translate("menus.ok"),
                Game.Language.Translate("menus.cancel")
            });

            textEntry.OnClosed += delegate(object sender2, DialogBoxClosedEventArgs e2)
            {
                if (e2.Result == 0)
                {
                    // Determine a title
                    var title      = (textEntry.EnteredText.Trim().Length > 0) ? textEntry.EnteredText.Trim() : suggestedTitle;
                    var shortTitle = title.ToSafeAssetName(true);

                    // Determine an asset path
                    int i         = 2;
                    var assetPath = AssetPath.Combine("campaigns", shortTitle + ".campaign");
                    while (File.Exists(Path.Combine(m_mod.Path, "assets/" + assetPath)))
                    {
                        assetPath = AssetPath.Combine("campaigns", shortTitle + i + ".campaign");
                        ++i;
                    }

                    // Save the file out
                    var fullPath    = Path.Combine(m_mod.Path, "assets/" + assetPath);
                    var newCampaign = new Campaign(assetPath);
                    newCampaign.Title = title;
                    newCampaign.Save(fullPath);

                    // Load the new campaign
                    Assets.Reload(assetPath);
                    OpenCampaign(Campaign.Get(assetPath), m_mod);
                }
            };
            ShowDialog(textEntry);
        }
Beispiel #4
0
        private void RenameMod()
        {
            var textEntry = TextEntryDialogBox.Create(Game.Language.Translate("menus.name_mod_prompt.title"), m_mod.Title, "", Game.Screen.Width - 300.0f, new string[] {
                Game.Language.Translate("menus.ok"),
                Game.Language.Translate("menus.cancel")
            });

            textEntry.OnClosed += delegate(object sender2, DialogBoxClosedEventArgs e2)
            {
                if (e2.Result == 0)
                {
                    // Get the title
                    var newTitle = (textEntry.EnteredText.Trim().Length > 0) ? textEntry.EnteredText.Trim() : "Untitled Mod";

                    // Save the title
                    var oldtitle = m_mod.Title;
                    m_mod.Title = newTitle;
                    m_mod.SaveInfo();

                    // Rename any campaigns that share the mod name
                    foreach (var campaign in Assets.List <Campaign>("campaigns", m_mod.Assets))
                    {
                        if (campaign.Title == oldtitle)
                        {
                            var fullPath    = Path.Combine(m_mod.Path, "assets/" + campaign.Path);
                            var newCampaign = campaign.Copy();
                            newCampaign.Title = newTitle;
                            newCampaign.Save(fullPath);
                            Assets.Reload(campaign.Path);
                        }
                    }

                    // Update the title
                    Title = MouseButton.Left.GetPrompt() + " " + m_mod.Title;
                }
            };
            ShowDialog(textEntry);
        }
Beispiel #5
0
        public EditorState(Game game, Mod mod, Campaign campaign, int levelIndex, string levelLoadPath, string levelSavePath) : base(game, levelLoadPath, LevelOptions.Editor)
        {
            m_mod         = mod;
            m_campaign    = campaign;
            m_levelIndex  = levelIndex;
            EnableGamepad = false;

            LevelSavePath      = levelSavePath;
            ShowPlacementsLeft = true;
            m_modified         = (levelLoadPath != levelSavePath);

            // Load Menu
            // Test button
            m_testButton                    = new Button(Texture.Get("gui/play.png", true), 48.0f, 48.0f);
            m_testButton.Region             = new Quad(0.0f, 0.0f, 0.375f, 0.375f);
            m_testButton.HighlightRegion    = new Quad(0.5f, 0.0f, 0.375f, 0.375f);
            m_testButton.DisabledRegion     = new Quad(0.0f, 0.5f, 0.375f, 0.375f);
            m_testButton.ShortcutKey        = Key.T;
            m_testButton.ShowShortcutPrompt = true;
            m_testButton.Anchor             = Anchor.BottomRight;
            m_testButton.LocalPosition      = new Vector2(-16.0f - m_testButton.Width, -16.0f - m_testButton.Height);
            m_testButton.Visible            = true;
            m_testButton.OnClicked         += delegate(object o, EventArgs args)
            {
                if (Dialog == null && !m_tileSelect.IsFullscreen)
                {
                    TestLevel();
                }
            };

            // Save button
            m_saveButton                    = new Button(Texture.Get("gui/save.png", true), 48.0f, 48.0f);
            m_saveButton.Region             = new Quad(0.0f, 0.0f, 0.375f, 0.375f);
            m_saveButton.HighlightRegion    = new Quad(0.5f, 0.0f, 0.375f, 0.375f);
            m_saveButton.DisabledRegion     = new Quad(0.0f, 0.5f, 0.375f, 0.375f);
            m_saveButton.ShortcutKey        = Key.S;
            m_saveButton.ShowShortcutPrompt = true;
            m_saveButton.Anchor             = Anchor.BottomRight;
            m_saveButton.LocalPosition      = new Vector2(-16.0f - m_testButton.Width - 8.0f - m_saveButton.Width, -16.0f - m_saveButton.Height);
            m_saveButton.Visible            = true;
            m_saveButton.OnClicked         += delegate(object o, EventArgs args)
            {
                if (Dialog == null && !m_tileSelect.IsFullscreen)
                {
                    SaveLevel();
                }
            };

            // Menu button
            m_menuButton                    = new Button(Texture.Get("gui/menu.png", true), 48.0f, 48.0f);
            m_menuButton.Region             = new Quad(0.0f, 0.0f, 0.375f, 0.375f);
            m_menuButton.HighlightRegion    = new Quad(0.5f, 0.0f, 0.375f, 0.375f);
            m_menuButton.DisabledRegion     = new Quad(0.0f, 0.5f, 0.375f, 0.375f);
            m_menuButton.ShortcutKey        = Key.Escape;
            m_menuButton.ShowShortcutPrompt = true;
            m_menuButton.Anchor             = Anchor.BottomRight;
            m_menuButton.LocalPosition      = new Vector2(-16.0f - m_menuButton.Width - 8.0f - m_saveButton.Width - 8.0f - m_menuButton.Width, -16.0f - m_testButton.Height);
            m_menuButton.Visible            = true;
            m_menuButton.OnClicked         += delegate(object o, EventArgs args)
            {
                if (Dialog == null && !m_tileSelect.IsFullscreen)
                {
                    ShowPauseMenu();
                }
            };

            // Load clickable title
            m_titleText               = new TextMenu(UIFonts.Default, new string[] { "" }, TextAlignment.Right, MenuDirection.Vertical);
            m_titleText.Anchor        = Anchor.TopRight;
            m_titleText.MouseOnly     = true;
            m_titleText.LocalPosition = new Vector2(-32.0f, 16.0f);
            m_titleText.OnClicked    += delegate(object sender, TextMenuClickedEventArgs e)
            {
                if (Dialog == null && !m_tileSelect.IsFullscreen)
                {
                    var textEntry = TextEntryDialogBox.Create(
                        Game.Language.Translate("menus.name_level_prompt.title"),
                        Level.Info.Title, "",
                        Game.Screen.Width - 300.0f, new string[] {
                        Game.Language.Translate("menus.ok"),
                        Game.Language.Translate("menus.cancel")
                    }
                        );
                    textEntry.OnClosed += delegate(object sender2, DialogBoxClosedEventArgs e2)
                    {
                        if (e2.Result == 0)
                        {
                            var title = (textEntry.EnteredText.Trim().Length > 0) ? textEntry.EnteredText.Trim() : "Untitled";
                            Level.Info.Title       = title;
                            m_titleText.Options[0] = MouseButton.Left.GetPrompt() + " " + TranslateTitle(title);
                            m_modified             = true;
                        }
                    };
                    ShowDialog(textEntry);
                }
            };

            // Load status
            m_statusText               = new Text(UIFonts.Smaller, "", UIColours.Text, TextAlignment.Left);
            m_statusText.Anchor        = Anchor.BottomLeft;
            m_statusText.LocalPosition = new Vector2(80.0f + 16.0f, -16.0f - m_statusText.Font.Height);
            m_statusTimeout            = 0.0f;

            // Load tile select
            m_tileSelect = new EditorTileSelect(Game, Game.User.Settings, Game.Language);
        }