UltimateZoneBuilder/Source/Plugins/BuilderModes/ErrorChecks/CheckObsoleteThings.cs
MaxED ecb650259b Added "safeboundary" game configuration property. The value determines the maximum map bounding box size considered to be safe by "Check map size" error check.
Changed, Map Analysis mode: some checks are now available only under certain conditions (for example, "Check polyobjects" is now available only when the map is in Hexen or UDMF map format).
Updated documentation ("Game Configuration - Basic Settings" page).
2016-05-18 23:31:12 +00:00

68 lines
1.6 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 ================== Properties
// Only possible when the game configuration supports the use of decorate
public override bool SkipCheck { get { return string.IsNullOrEmpty(General.Map.Config.DecorateGames); } }
#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
}
}