mirror of
https://git.do.srb2.org/STJr/ZoneBuilder.git
synced 2024-11-15 09:01:40 +00:00
150 lines
5.6 KiB
C#
150 lines
5.6 KiB
C#
using System;
|
|
using System.Windows.Forms;
|
|
using CodeImp.DoomBuilder.Geometry;
|
|
using CodeImp.DoomBuilder.Controls;
|
|
|
|
//JBR Draw Shape options panel
|
|
namespace CodeImp.DoomBuilder.BuilderModes
|
|
{
|
|
internal partial class DrawShapeOptionsPanel : UserControl
|
|
{
|
|
public event EventHandler OnValueChanged;
|
|
private bool blockEvents;
|
|
|
|
public bool PreviewReference { get { return previewreference.Checked; } set { blockEvents = true; previewreference.Checked = value; blockEvents = false; } }
|
|
public bool Ellipse { get { return ellipse.Checked; } set { blockEvents = true; ellipse.Checked = value; blockEvents = false; } }
|
|
public int FirstPointType { get { return firstpointtype.SelectedIndex; } set { blockEvents = true; firstpointtype.SelectedIndex = value; blockEvents = false; } }
|
|
public int CreateAs { get { return createas.SelectedIndex; } set { blockEvents = true; createas.SelectedIndex = value; blockEvents = false; } }
|
|
public bool FrontOutside { get { return frontoutside.Checked; } set { blockEvents = true; frontoutside.Checked = value; blockEvents = false; } }
|
|
public int Sides { get { return sides.GetResult(3); } set { blockEvents = true; SetValue(sides, value, 3, 1000); blockEvents = false; } }
|
|
public int Spikiness { get { return spikiness.GetResult(0); } set { blockEvents = true; SetValue(spikiness, value, 0, 32767); blockEvents = false; } }
|
|
public int SpikingMode { get { return spikingmode.SelectedIndex; } set { blockEvents = true; spikingmode.SelectedIndex = value; blockEvents = false; } }
|
|
public float StartAngle { get { return startangle.GetResultFloat(0f); } set { blockEvents = true; SetValue(startangle, value, 0f, 360f); blockEvents = false; } }
|
|
public float SweepAngle { get { return sweepangle.GetResultFloat(0f); } set { blockEvents = true; SetValue(sweepangle, value, 1f, 360f); blockEvents = false; } }
|
|
public bool LimitAngleQuad { get { return limitanglequad.Checked; } set { blockEvents = true; limitanglequad.Checked = value; blockEvents = false; } }
|
|
|
|
public DrawShapeOptionsPanel()
|
|
{
|
|
InitializeComponent();
|
|
spikingmode.SelectedIndex = 0;
|
|
firstpointtype.SelectedIndex = 0;
|
|
sides.Text = "3";
|
|
spikiness.Text = "0";
|
|
startangle.Text = "0";
|
|
sweepangle.Text = "360";
|
|
}
|
|
|
|
private void SetValue(ButtonsNumericTextbox component, int value, int min, int max)
|
|
{
|
|
if (value < min) value = min;
|
|
if (value > max) value = max;
|
|
component.Text = value.ToString();
|
|
}
|
|
|
|
private void SetValue(ButtonsNumericTextbox component, float value, float min, float max)
|
|
{
|
|
if (value < min) value = min;
|
|
if (value > max) value = max;
|
|
component.Text = value.ToString();
|
|
}
|
|
|
|
private void ValueChanged(object sender, EventArgs e)
|
|
{
|
|
if (!blockEvents && OnValueChanged != null) OnValueChanged(this, e);
|
|
}
|
|
|
|
private void sides_WhenTextChanged(object sender, EventArgs e)
|
|
{
|
|
int numsides = sides.GetResult(3);
|
|
if (numsides < 3)
|
|
sides.Text = "3";
|
|
if (numsides > 1024)
|
|
sides.Text = "1024";
|
|
ValueChanged(this, e);
|
|
}
|
|
|
|
private void spikiness_WhenTextChanged(object sender, EventArgs e)
|
|
{
|
|
int spikeperc = sides.GetResult(0);
|
|
if (spikeperc > 32767)
|
|
spikiness.Text = "32767";
|
|
ValueChanged(this, e);
|
|
}
|
|
|
|
private void startangle_WhenTextChanged(object sender, EventArgs e)
|
|
{
|
|
float angle = startangle.GetResultFloat(0f);
|
|
if (angle > 360f)
|
|
{
|
|
angle = 360f;
|
|
startangle.Text = "360";
|
|
}
|
|
startanglewheel.Angle = angle;
|
|
ValueChanged(this, e);
|
|
}
|
|
|
|
private void sweepangle_WhenTextChanged(object sender, EventArgs e)
|
|
{
|
|
float angle = sweepangle.GetResultFloat(0f);
|
|
if (angle < 1f)
|
|
{
|
|
angle = 1f;
|
|
sweepangle.Text = "1";
|
|
}
|
|
if (angle > 360f)
|
|
{
|
|
angle = 360f;
|
|
sweepangle.Text = "360";
|
|
}
|
|
sweepanglewheel.Angle = angle;
|
|
ValueChanged(this, e);
|
|
}
|
|
|
|
private void startanglewheel_AngleChanged(object sender, EventArgs e)
|
|
{
|
|
startangle.Text = startanglewheel.Angle.ToString();
|
|
ValueChanged(this, e);
|
|
}
|
|
|
|
private void sweepanglewheel_AngleChanged(object sender, EventArgs e)
|
|
{
|
|
float v = sweepanglewheel.Angle;
|
|
if (v < 0f) v = 0.1f;
|
|
if (v > 360f) v = 360f;
|
|
if (v == 0f) v = 360f;
|
|
sweepangle.Text = v.ToString();
|
|
ValueChanged(this, e);
|
|
}
|
|
|
|
private void sides3_Click(object sender, EventArgs e)
|
|
{
|
|
sides.Text = "3";
|
|
ValueChanged(this, e);
|
|
}
|
|
|
|
private void sides8_Click(object sender, EventArgs e)
|
|
{
|
|
sides.Text = "8";
|
|
ValueChanged(this, e);
|
|
}
|
|
|
|
private void sides24_Click(object sender, EventArgs e)
|
|
{
|
|
sides.Text = "24";
|
|
ValueChanged(this, e);
|
|
}
|
|
|
|
private void spike0_Click(object sender, EventArgs e)
|
|
{
|
|
spikiness.Text = "0";
|
|
ValueChanged(this, e);
|
|
}
|
|
|
|
private void spike50_Click(object sender, EventArgs e)
|
|
{
|
|
spikiness.Text = "50";
|
|
ValueChanged(this, e);
|
|
}
|
|
|
|
}
|
|
}
|