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(); }
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); }