Changed, Draw Ellipse mode: lowered minimum subdivisions to 4.

Changed, Draw Ellipse mode: Increase/Decrease bevel actions now always increase (and decrease) to the next even number.
Changed, Test Map drop-down: warning icon is now displayed when associated test engine executable can not be located, question icon is now displayed when the editor is unable to get the icon from the associated test engine executable.
This commit is contained in:
MaxED 2016-03-04 21:21:41 +00:00
parent b44023abed
commit 831cff45e6
2 changed files with 42 additions and 24 deletions

View file

@ -41,7 +41,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.Data
{ {
if(testprogramname == DEFAULT_ENGINE_NAME && !String.IsNullOrEmpty(TestProgram)) if(testprogramname == DEFAULT_ENGINE_NAME && !String.IsNullOrEmpty(TestProgram))
{ {
//get engine name from path // Get engine name from path
testprogramname = Path.GetFileNameWithoutExtension(TestProgram); testprogramname = Path.GetFileNameWithoutExtension(TestProgram);
} }
@ -55,12 +55,11 @@ namespace CodeImp.DoomBuilder.GZBuilder.Data
if(File.Exists(TestProgram)) if(File.Exists(TestProgram))
{ {
Icon i = Icon.ExtractAssociatedIcon(TestProgram); Icon i = Icon.ExtractAssociatedIcon(TestProgram);
if(i != null) icon = i.ToBitmap(); icon = (i != null ? i.ToBitmap() : new Bitmap(Properties.Resources.Question));
} }
else
if(icon == null)
{ {
icon = new Bitmap(16, 16); icon = new Bitmap(Properties.Resources.Warning);
} }
} }

View file

@ -28,13 +28,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
#region ================== Constructor #region ================== Constructor
public DrawEllipseMode()
{
undoname = "Ellipse draw";
shapename = "ellipse";
usefourcardinaldirections = true;
}
#endregion #endregion
#region ================== Settings panel #region ================== Settings panel
@ -42,7 +35,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
override protected void SetupInterface() override protected void SetupInterface()
{ {
maxsubdivisions = 512; maxsubdivisions = 512;
minsubdivisions = 6; minsubdivisions = 4;
// Load stored settings // Load stored settings
subdivisions = General.Clamp(General.Settings.ReadPluginSetting("drawellipsemode.subdivisions", 8), minsubdivisions, maxsubdivisions); subdivisions = General.Clamp(General.Settings.ReadPluginSetting("drawellipsemode.subdivisions", 8), minsubdivisions, maxsubdivisions);
@ -86,21 +79,19 @@ namespace CodeImp.DoomBuilder.BuilderModes
override protected Vector2D[] GetShape(Vector2D pStart, Vector2D pEnd) override protected Vector2D[] GetShape(Vector2D pStart, Vector2D pEnd)
{ {
//no shape // No shape
if(pEnd.x == pStart.x && pEnd.y == pStart.y) return new Vector2D[0]; if(pEnd.x == pStart.x && pEnd.y == pStart.y) return new Vector2D[0];
//line // Line
if(pEnd.x == pStart.x || pEnd.y == pStart.y) return new[] { pStart, pEnd }; if(pEnd.x == pStart.x || pEnd.y == pStart.y) return new[] { pStart, pEnd };
//got shape // Got shape
if(bevelwidth < 0) if(subdivisions < 6)
{ currentbevelwidth = 0; // Works strange otherwise
else if(bevelwidth < 0)
currentbevelwidth = -Math.Min(Math.Abs(bevelwidth), Math.Min(width, height) / 2) + 1; currentbevelwidth = -Math.Min(Math.Abs(bevelwidth), Math.Min(width, height) / 2) + 1;
}
else else
{
currentbevelwidth = bevelwidth; currentbevelwidth = bevelwidth;
}
Vector2D[] shape = new Vector2D[subdivisions + 1]; Vector2D[] shape = new Vector2D[subdivisions + 1];
@ -129,7 +120,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
shape[i] = new Vector2D(px, py); shape[i] = new Vector2D(px, py);
curAngle += angleStep; curAngle += angleStep;
} }
//add final point
// Add final point
shape[subdivisions] = shape[0]; shape[subdivisions] = shape[0];
return shape; return shape;
} }
@ -143,6 +135,33 @@ namespace CodeImp.DoomBuilder.BuilderModes
#region ================== Events #region ================== Events
public override void OnAccept()
{
switch(points.Count - 1) // Last point matches the first one
{
case 4: undoname = "Rhombus draw"; shapename = "rhombus"; break;
case 5: undoname = "Pentagon draw"; shapename = "pentagon"; break;
case 6: undoname = "Hexagon draw"; shapename = "hexagon"; break;
case 7: undoname = "Heptagon draw"; shapename = "heptagon"; break;
case 8: undoname = "Octagon draw"; shapename = "octagon"; break;
case 9: undoname = "Enneagon draw"; shapename = "enneagon"; break;
case 10: undoname = "Decagon draw"; shapename = "decagon"; break;
case 11: undoname = "Hendecagon draw"; shapename = "hendecagon"; break;
case 12: undoname = "Dodecagon draw"; shapename = "dodecagon"; break;
case 13: undoname = "Tridecagon draw"; shapename = "tridecagon"; break;
case 14: undoname = "Tetradecagon draw"; shapename = "tetradecagon"; break;
case 15: undoname = "Pentadecagon draw"; shapename = "pentadecagon"; break;
case 16: undoname = "Hexadecagon draw"; shapename = "hexadecagon"; break;
case 17: undoname = "Heptadecagon draw"; shapename = "heptadecagon"; break;
case 18: undoname = "Octadecagon draw"; shapename = "octadecagon"; break;
case 19: undoname = "Enneadecagon draw"; shapename = "enneadecagon"; break;
case 20: undoname = "Icosagon draw"; shapename = "icosagon"; break;
default: undoname = "Ellipse draw"; shapename = "ellipse"; break;
}
base.OnAccept();
}
private void OptionsPanelOnValueChanged(object sender, EventArgs eventArgs) private void OptionsPanelOnValueChanged(object sender, EventArgs eventArgs)
{ {
bevelwidth = panel.Spikiness; bevelwidth = panel.Spikiness;
@ -163,7 +182,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
{ {
if(maxsubdivisions - subdivisions > 1) if(maxsubdivisions - subdivisions > 1)
{ {
subdivisions += 2; subdivisions += (subdivisions % 2 != 0 ? 1 : 2);
panel.Subdivisions = subdivisions; panel.Subdivisions = subdivisions;
Update(); Update();
} }
@ -173,7 +192,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
{ {
if(subdivisions - minsubdivisions > 1) if(subdivisions - minsubdivisions > 1)
{ {
subdivisions -= 2; subdivisions -= (subdivisions % 2 != 0 ? 1 : 2);
panel.Subdivisions = subdivisions; panel.Subdivisions = subdivisions;
Update(); Update();
} }