Exemple #1
0
        // Validate ...research...?
        public override bool                Validate()
        {
            // Hopefully...
            var stringBuilder = new StringBuilder();
            var rVal          = true;

            CCL_Log.CaptureBegin(stringBuilder);

            var AdvancedResearchDefs = Controller.Data.AdvancedResearchDefs;

            // Make sure the hidden research exists
            if (CommunityCoreLibrary.Research.Locker == null)
            {
                CCL_Log.Trace(Verbosity.FatalErrors, "Missing research locker!");
                rVal = false;
            }

            // Validate each advanced research def
            for (int index = AdvancedResearchDefs.Count - 1; index >= 0; index--)
            {
                var advancedResearchDef = AdvancedResearchDefs[index];

                if (!advancedResearchDef.IsValid())
                {
                    // Remove projects with errors from list of usable projects
                    AdvancedResearchDefs.Remove(advancedResearchDef);
                    rVal = false;
                    continue;
                }

                if (advancedResearchDef.IsLockedOut())
                {
                    // Remove locked out projects
                    CCL_Log.TraceMod(
                        advancedResearchDef,
                        Verbosity.Warnings,
                        "Def is locked out by one or more research prerequisites");
                    AdvancedResearchDefs.Remove(advancedResearchDef);
                    continue;
                }
            }

#if DEBUG
            if (rVal == true)
            {
                var allMods = Controller.Data.Mods;
                foreach (var mod in allMods)
                {
                    if (!Find_Extensions.DefListOfTypeForMod <AdvancedResearchDef>(mod).NullOrEmpty())
                    {
                        CCL_Log.TraceMod(
                            mod,
                            Verbosity.Validation,
                            "Passed validation"
                            );
                    }
                }
            }
#endif

            // Should be empty or a laundry list
            CCL_Log.CaptureEnd(
                stringBuilder,
                rVal ? "Validated" : "Errors during validation"
                );
            strReturn = stringBuilder.ToString();

            // Return true if all mods OK, false if any failed validation
            State = rVal ? SubControllerState.Validated : SubControllerState.ValidationError;
            return(rVal);
        }