UltimateZoneBuilder/Source/Plugins/BuilderModes/ErrorChecks/ResultInvalidPolyobjectLines.cs
2017-01-15 00:35:40 +02:00

94 lines
2.2 KiB
C#
Executable file

#region ================== Namespaces
using System;
using System.Collections.Generic;
using CodeImp.DoomBuilder.Map;
using CodeImp.DoomBuilder.Rendering;
#endregion
namespace CodeImp.DoomBuilder.BuilderModes
{
public class ResultInvalidPolyobjectLines : ErrorResult
{
#region ================== Variables
private readonly List<Linedef> lines;
private readonly string linesinfo;
#endregion
#region ================== Properties
public override int Buttons { get { return 0; } }
#endregion
#region ================== Constructor / Destructor
public ResultInvalidPolyobjectLines(List<Linedef> lines, string details)
{
// Initialize
this.lines = lines;
this.hidden = true;
foreach(Linedef l in lines)
{
this.viewobjects.Add(l);
this.hidden &= l.IgnoredErrorChecks.Contains(this.GetType());
}
if(lines.Count == 1)
{
linesinfo = "Incorrect Polyobject setup for linedef " + lines[0].Index;
}
else
{
linesinfo = "Incorrect Polyobject setup for linedefs " + lines[0].Index;
for(int i = 1; i < lines.Count - 1; i++) linesinfo += ", " + lines[i].Index;
linesinfo += " and " + lines[lines.Count - 1].Index;
}
this.description = linesinfo + ": " + details;
}
#endregion
#region ================== Methods
// This sets if this result is displayed in ErrorCheckForm (mxd)
internal override void Hide(bool hide)
{
hidden = hide;
Type t = this.GetType();
if(hide)
{
foreach(Linedef l in lines)
l.IgnoredErrorChecks.Add(t);
}
else
{
foreach(Linedef l in lines)
if(l.IgnoredErrorChecks.Contains(t)) l.IgnoredErrorChecks.Remove(t);
}
}
// This must return the string that is displayed in the listbox
public override string ToString()
{
return linesinfo;
}
// Rendering
public override void PlotSelection(IRenderer2D renderer)
{
foreach(Linedef l in lines)
{
renderer.PlotLinedef(l, General.Colors.Selection);
renderer.PlotVertex(l.Start, ColorCollection.VERTICES);
renderer.PlotVertex(l.End, ColorCollection.VERTICES);
}
}
#endregion
}
}