ACR_BuilderPlugin.ModuleValidator.Run C# (CSharp) Méthode

Run() public méthode

public Run ( ) : void
Résultat void
        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");
            }
        }

Usage Example

 /// <summary>
 /// Checks the module for common errors, and logs them to a file. Handled by
 /// the ValidateWindow class.
 /// </summary>
 private void ValidateModule(object sender, EventArgs e)
 {
     if (MessageBox.Show("This tool will check for common errors in using ACR tools. Validating a module may take several minutes. Continue?", "Validate Module", MessageBoxButtons.OKCancel) == DialogResult.Cancel) return;
     try
     {
         ModuleValidator validator = new ModuleValidator();
         validator.Run();
     }
     catch (Exception exception)
     {
         MessageBox.Show(exception.ToString());
     }
 }