UltimateZoneBuilder/Source/Plugins/BuilderModes/ErrorChecks/ResultObsoleteThing.cs
MaxED 7febb2434f Fixed, Visual mode: horizontal sprite offset was applied incorrectly.
DECORATE: added "$obsolete" special comment. When present, it marks the thing as obsolete. It will be detected by "Check obsolete thing" Map Analysis Mode check and will be marked in the Thing Properties Window and the Thing Info panel.
Map Analysis mode: added "Check obsolete things" check.
Updated documentation ("DECORATE keys" page).
Updated ZDoom_DECORATE.cfg.
2015-10-15 15:16:31 +00:00

78 lines
2.1 KiB
C#

#region ================== Namespaces
using System;
using CodeImp.DoomBuilder.Map;
using CodeImp.DoomBuilder.Rendering;
#endregion
namespace CodeImp.DoomBuilder.BuilderModes
{
public class ResultObsoleteThing : ErrorResult
{
#region ================== Variables
private readonly Thing thing;
#endregion
#region ================== Properties
public override int Buttons { get { return 1; } }
public override string Button1Text { get { return "Delete Thing"; } }
#endregion
#region ================== Constructor / Destructor
public ResultObsoleteThing(Thing t, string message)
{
// Initialize
this.thing = t;
this.viewobjects.Add(t);
this.hidden = t.IgnoredErrorChecks.Contains(this.GetType());
if(string.IsNullOrEmpty(message))
this.description = "This thing is marked as obsolete in DECORATE. You should probably replace or delete it.";
else
this.description = "This thing is marked as obsolete in DECORATE: " + message;
}
#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) thing.IgnoredErrorChecks.Add(t);
else if(thing.IgnoredErrorChecks.Contains(t)) thing.IgnoredErrorChecks.Remove(t);
}
// This must return the string that is displayed in the listbox
public override string ToString()
{
return "Thing " + thing.Index + " (" + General.Map.Data.GetThingInfo(thing.Type).Title + ") at " + thing.Position.x + ", " + thing.Position.y + " is obsolete.";
}
// Rendering
public override void RenderOverlaySelection(IRenderer2D renderer)
{
renderer.RenderThing(thing, General.Colors.Selection, Presentation.THINGS_ALPHA);
}
// This removes the thing
public override bool Button1Click(bool batchMode)
{
if(!batchMode) General.Map.UndoRedo.CreateUndo("Delete thing");
thing.Dispose();
General.Map.IsChanged = true;
General.Map.ThingsFilter.Update();
return true;
}
#endregion
}
}