ZoneBuilder/Source/Plugins/BuilderModes/Interface/InsertThingsRadiallyOptions...

85 lines
3.4 KiB
C#

using System;
using System.Windows.Forms;
namespace CodeImp.DoomBuilder.BuilderModes
{
internal partial class InsertThingsRadiallyOptionsPanel : UserControl
{
public event EventHandler OnValueChanged;
private bool blockEvents;
public int Number { get { return (int)number.Value; } set { blockEvents = true; number.Value = value; blockEvents = false; } }
public int MaxNumber { get { return (int)number.Maximum; } set { number.Maximum = value; } }
public int MinNumber { get { return (int)number.Minimum; } set { number.Minimum = value; } }
public int Radius { get { return (int)radius.Value; } set { blockEvents = true; radius.Value = value; blockEvents = false; } }
public int MaxRadius { get { return (int)radius.Maximum; } set { radius.Maximum = value; } }
public int MinRadius { get { return (int)radius.Minimum; } set { radius.Minimum = value; } }
public bool SnapToGrid { get { return snaptogrid.Checked; } set { snaptogrid.Checked = value; } }
public int Type { get { return (int)type.Value; } set { type.Value = value; } }
public int Parameter { get { return (int)parameter.Value; } set { parameter.Value = value; } }
public InsertThingsRadiallyOptionsPanel()
{
InitializeComponent();
radius.Value = General.Map.Grid.GridSize;
}
public void Register()
{
number.ValueChanged += ValueChanged;
radius.ValueChanged += ValueChanged;
snaptogrid.CheckedChanged += ValueChanged;
type.ValueChanged += ValueChanged;
parameter.ValueChanged += ValueChanged;
General.Interface.AddButton(numberlabel);
General.Interface.AddButton(number);
General.Interface.AddButton(radiuslabel);
General.Interface.AddButton(radius);
General.Interface.AddButton(snaptogrid);
General.Interface.AddButton(typelabel);
General.Interface.AddButton(type);
General.Interface.AddButton(browse);
General.Interface.AddButton(parameterlabel);
General.Interface.AddButton(parameter);
General.Interface.AddButton(reset);
}
public void Unregister()
{
General.Interface.RemoveButton(reset);
General.Interface.RemoveButton(parameter);
General.Interface.RemoveButton(parameterlabel);
General.Interface.RemoveButton(browse);
General.Interface.RemoveButton(type);
General.Interface.RemoveButton(typelabel);
General.Interface.RemoveButton(snaptogrid);
General.Interface.RemoveButton(radius);
General.Interface.RemoveButton(radiuslabel);
General.Interface.RemoveButton(number);
General.Interface.RemoveButton(numberlabel);
}
private void ValueChanged(object sender, EventArgs e)
{
if(!blockEvents && OnValueChanged != null) OnValueChanged(this, EventArgs.Empty);
}
private void reset_Click(object sender, EventArgs e)
{
blockEvents = true;
parameter.Value = 0;
type.Value = 1;
snaptogrid.Checked = false;
radius.Value = General.Map.Grid.GridSize;
blockEvents = false;
number.Value = 8;
}
private void browse_Click(object sender, EventArgs e)
{
type.Value = General.Interface.BrowseThingType(BuilderPlug.Me.MenusForm, (int)type.Value);
}
}
}