UltimateZoneBuilder/Source/Plugins/VisplaneExplorer/InterfaceForm.cs

206 lines
6.1 KiB
C#
Executable file

#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
}
}