#region === Copyright (c) 2010 Pascal van der Heiden === using System; using System.Drawing; using System.Globalization; using System.Windows.Forms; using CodeImp.DoomBuilder.Windows; #endregion namespace CodeImp.DoomBuilder.Plugins.VisplaneExplorer { public partial class InterfaceForm : DelayedForm { #region ================== Constants #endregion #region ================== mxd. Event handlers public event EventHandler OnVisplaneSettingsChanged; #endregion #region ================== Variables private ViewStats viewstats; private Point oldttposition; private int viewheight; private int viewheightcustom; private int viewheightdefault; #endregion #region ================== Properties internal ViewStats ViewStats { get { return viewstats; } } internal bool OpenDoors { get { return cbopendoors.Checked; } } //mxd internal bool ShowHeatmap { get { return cbheatmap.Checked; } } //mxd internal int ViewHeight { get { return viewheight; } } internal int ViewHeightDefault { get { return viewheightdefault; } } #endregion #region ================== Constructor / Destructor // Constructor public InterfaceForm() { viewheightdefault = General.Map.Config.VisplaneViewHeightDefault; InitializeComponent(); cbopendoors.Checked = General.Settings.ReadPluginSetting("opendoors", false); //mxd cbheatmap.Checked = General.Settings.ReadPluginSetting("showheatmap", false); //mxd viewheight = General.Settings.ReadPluginSetting("viewheight", viewheightdefault); viewheightcustom = General.Settings.ReadPluginSetting("viewheightcustom", 0); RedrawViewHeightMenuItems(); } #endregion #region ================== Methods // This adds the buttons to the toolbar public void AddToInterface() { General.Interface.BeginToolbarUpdate(); //mxd General.Interface.AddButton(statsbutton); General.Interface.AddButton(separator); //mxd General.Interface.AddButton(cbopendoors); //mxd General.Interface.AddButton(cbheatmap); //mxd General.Interface.AddButton(heightbutton); General.Interface.EndToolbarUpdate(); //mxd } // This removes the buttons from the toolbar public void RemoveFromInterface() { General.Interface.BeginToolbarUpdate(); //mxd General.Interface.RemoveButton(heightbutton); General.Interface.RemoveButton(cbheatmap); //mxd General.Interface.RemoveButton(cbopendoors); //mxd General.Interface.RemoveButton(separator); //mxd General.Interface.RemoveButton(statsbutton); General.Interface.EndToolbarUpdate(); //mxd //mxd. Save settings General.Settings.WritePluginSetting("opendoors", cbopendoors.Checked); General.Settings.WritePluginSetting("showheatmap", cbheatmap.Checked); General.Settings.WritePluginSetting("viewheight", viewheight); General.Settings.WritePluginSetting("viewheightcustom", viewheightcustom); } // This shows a tooltip public void ShowTooltip(string text, Point p) { Point sp = General.Interface.Display.PointToScreen(p); Point fp = (General.Interface as Form).Location; Point tp = new Point(sp.X - fp.X, sp.Y - fp.Y); if(oldttposition != tp) { tooltip.Show(text, General.Interface, tp); oldttposition = tp; } } // This hides the tooltip public void HideTooltip() { tooltip.Hide(General.Interface); } #endregion #region ================== Events // Selecting a type of stats to view private void stats_Click(object sender, EventArgs e) { foreach(ToolStripMenuItem i in statsbutton.DropDownItems) i.Checked = false; ToolStripMenuItem item = (ToolStripMenuItem)sender; viewstats = (ViewStats)int.Parse(item.Tag.ToString(), CultureInfo.InvariantCulture); item.Checked = true; statsbutton.Image = item.Image; General.Interface.RedrawDisplay(); } //mxd private void cbheatmap_Click(object sender, EventArgs e) { General.Interface.RedrawDisplay(); } //mxd private void cbopendoors_Click(object sender, EventArgs e) { if(OnVisplaneSettingsChanged != null) OnVisplaneSettingsChanged(this, EventArgs.Empty); } // Select the height above the floor the Visplane Explorer renderer draws from. private void viewheight_Click(object sender, EventArgs e) { foreach (ToolStripMenuItem i in heightbutton.DropDownItems) i.Checked = false; ToolStripMenuItem item = (ToolStripMenuItem)sender; viewheight = int.Parse(item.Tag.ToString(), CultureInfo.InvariantCulture); item.Checked = true; RedrawViewHeightButtonText(); General.Interface.RedrawDisplay(); if(OnVisplaneSettingsChanged != null) OnVisplaneSettingsChanged(this, EventArgs.Empty); } // Prompt user to enter a custom height, saving to the menu dropdown. private void heightcustomadd_Click(object sender, EventArgs e) { customheightdialog.CustomHeight = viewheightcustom; if (customheightdialog.ShowDialog() != DialogResult.OK) return; int oldviewheight = viewheight; viewheightcustom = customheightdialog.CustomHeight; viewheight = viewheightcustom > 0 ? viewheightcustom : viewheightdefault; if (General.Map.Config.VisplaneViewHeights.ContainsKey(viewheightcustom.ToString())) viewheightcustom = 0; RedrawViewHeightMenuItems(); if (oldviewheight != viewheight) { General.Interface.RedrawDisplay(); if (OnVisplaneSettingsChanged != null) OnVisplaneSettingsChanged(this, EventArgs.Empty); } } private void RedrawViewHeightButtonText() { heightbutton.Text = "View Height (" + viewheight.ToString() + ")"; } private void RedrawViewHeightMenuItems() { RedrawViewHeightButtonText(); heightcustomitem.Tag = viewheightcustom.ToString(); heightcustomitem.Visible = viewheightcustom > 0; heightcustomitem.Text = viewheightcustom.ToString() + " - Custom"; foreach (ToolStripMenuItem heightitem in heightbutton.DropDownItems) heightitem.Checked = viewheight == int.Parse((string)heightitem.Tag, CultureInfo.InvariantCulture); } #endregion } }