public void Run()
{
// Open our log file.
log = new System.IO.StreamWriter(NWN2ToolsetPreferences.PluginsFolder + "\\acr_validation.log");
log.WriteLine("ACR Validation Tool - Log");
bool autoSavePreviousState = NWN2ToolsetMainForm.App.AutosaveTemporarilyDisabled;
NWN2ToolsetMainForm.App.AutosaveTemporarilyDisabled = true;
try
{
#region Validate module information
NWN2GameModule module = NWN2ToolsetMainForm.App.Module;
#endregion
#region Validate blueprints
log.WriteLine("\nValidating blueprints: Items");
foreach (NWN2ItemBlueprint item in module.Items) Validate(item);
log.WriteLine("\nValidating blueprints: Creatures");
foreach (NWN2CreatureBlueprint creature in module.Creatures) Validate(creature);
log.WriteLine("\nValidating blueprints: Doors");
foreach (NWN2DoorBlueprint door in module.Doors) Validate(door);
log.WriteLine("\nValidating blueprints: Placeables");
foreach (NWN2PlaceableBlueprint placeable in module.Placeables) Validate(placeable);
log.WriteLine("\nValidating blueprints: Triggers");
foreach (NWN2TriggerBlueprint trigger in module.Triggers) Validate(trigger);
log.WriteLine("\nValidating blueprints: Waypoints");
foreach (NWN2WaypointBlueprint waypoint in module.Waypoints) Validate(waypoint);
#endregion
#region Validate areas
foreach (NWN2GameArea area in module.Areas.Values)
{
log.WriteLine("\nValidating area: " + area.Name);
area.Demand();
// A bloom value of 0 can cause issues on some graphic cards.
foreach (OEIShared.NetDisplay.DayNightStage dayNightStage in area.DayNightStages)
{
if (dayNightStage.BloomGlowIntensity == 0.0f)
{
log.WriteLine("FIXED: Area \"{0}\" a day/night cycle {1} has a bloom intensity of 0.0f. This causes issues on some graphics cards.", area.Name, dayNightStage.Stage.ToString());
dayNightStage.BloomGlowIntensity = 0.001f;
}
}
// Area object instances.
foreach (NWN2CreatureInstance creature in area.Creatures) Validate(creature);
foreach (NWN2DoorInstance door in area.Doors) Validate(door);
foreach (NWN2ItemInstance item in area.Items) Validate(item);
foreach (NWN2PlaceableInstance placeable in area.Placeables) Validate(placeable);
foreach (NWN2TriggerInstance trigger in area.Triggers) Validate(trigger);
foreach (NWN2WaypointInstance waypoint in area.Waypoints) Validate(waypoint);
// Enforce non-default scripts.
EnforceNonDefaultScript(area.Name, area.OnClientEnterScript, "acf_area_client", new string[] { "" });
EnforceNonDefaultScript(area.Name, area.OnEnterScript, "acf_area_onenter", new string[] { "" });
EnforceNonDefaultScript(area.Name, area.OnExitScript, "acf_area_onexit", new string[] { "" });
EnforceNonDefaultScript(area.Name, area.OnHeartbeat, "acf_area_onhbeat", new string[] { "" });
EnforceNonDefaultScript(area.Name, area.OnUserDefined, "acf_area_userdef", new string[] { "" });
// Save data.
area.LoadAllHookPoints();
area.OEISerialize();
area.Release();
}
#endregion
// Open the log file.
log.WriteLine("\nValidation complete.");
module.Modified = true;
}
finally
{
NWN2ToolsetMainForm.App.AutosaveTemporarilyDisabled = autoSavePreviousState;
log.Close();
System.Diagnostics.Process.Start(NWN2ToolsetPreferences.PluginsFolder + "\\acr_validation.log");
}
}