Example #1
0
        protected override void OnShutdown()
        {
            // Disable camera control
            CameraController.AllowUserRotate = false;
            CameraController.AllowUserZoom   = false;
            CameraController.AllowUserPan    = false;

            // Remove GUI elements
            Game.Screen.Elements.Remove(m_menuButton);
            m_menuButton.Dispose();
            m_menuButton = null;

            Game.Screen.Elements.Remove(m_saveButton);
            m_saveButton.Dispose();
            m_saveButton = null;

            Game.Screen.Elements.Remove(m_testButton);
            m_testButton.Dispose();
            m_saveButton = null;

            Game.Screen.Elements.Remove(m_titleText);
            m_titleText.Dispose();
            m_titleText = null;

            Game.Screen.Elements.Remove(m_statusText);
            m_statusText.Dispose();
            m_statusText = null;

            Game.Screen.Elements.Remove(m_tileSelect);
            m_tileSelect.Dispose();
            m_tileSelect = null;

            // Dispose things
            m_grid.Dispose();
            m_outline.Dispose();

            base.OnShutdown();
        }
Example #2
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);
        }