UltimateZoneBuilder/Source/Plugins/BuilderModes/ErrorChecks/CheckObsoleteThings.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

61 lines
1.4 KiB
C#

#region ================== Namespaces
using System.Threading;
using CodeImp.DoomBuilder.Config;
using CodeImp.DoomBuilder.Map;
#endregion
namespace CodeImp.DoomBuilder.BuilderModes
{
[ErrorChecker("Check obsolete things", true, 50)]
public class CheckObsoleteThings : ErrorChecker
{
#region ================== Constants
private const int PROGRESS_STEP = 10;
#endregion
#region ================== Constructor / Destructor
public CheckObsoleteThings()
{
// Total progress is done when all things are checked
SetTotalProgress(General.Map.Map.Things.Count / PROGRESS_STEP);
}
#endregion
#region ================== Methods
// This runs the check
public override void Run()
{
int progress = 0;
int stepprogress = 0;
// Go for all things
foreach(Thing t in General.Map.Map.Things)
{
ThingTypeInfo info = General.Map.Data.GetThingInfoEx(t.Type);
if(info != null && info.IsObsolete)
{
SubmitResult(new ResultObsoleteThing(t, info.ObsoleteMessage));
}
// Handle thread interruption
try { Thread.Sleep(0); } catch(ThreadInterruptedException) { return; }
// We are making progress!
if((++progress / PROGRESS_STEP) > stepprogress)
{
stepprogress = (progress / PROGRESS_STEP);
AddProgress(1);
}
}
}
#endregion
}
}