private void GetAllHediffs() { if (runtime == null) // If that setting is null don't get any more at runtime. { _allCompleteDefs = hediffDefsComplete; _allPartialDefs = hediffDefs; return; } var completeSet = new HashSet <HediffDef>(hediffDefsComplete); // Use hash sets so we don't have any duplicates. var partialSet = new HashSet <HediffDef>(hediffDefs); IEnumerable <HediffDef> allTfHediffs = TransformerUtility.AllMorphTfs; foreach (HediffDef morphTf in allTfHediffs) { if (IsValidTfDef(morphTf)) { MorphTransformationTypes type = morphTf.GetTransformationType(); if ((type & MorphTransformationTypes.Full) != 0) { completeSet.Add(morphTf); } if ((type & MorphTransformationTypes.Partial) != 0) { partialSet.Add(morphTf); } } } _allCompleteDefs = completeSet.ToList(); // Now convert them back to lists. _allPartialDefs = completeSet.ToList(); }
private bool IsValidTfDef(HediffDef def) { MorphTransformationTypes type = def.GetTransformationType(); if ((type & runtime.types) == 0) { return(false); } var hasAnyCats = false; foreach (MorphDef morphDef in MorphUtilities.GetAssociatedMorph(def)) { bool hasCat = morphDef.categories.Any(c => runtime.categories.Contains(c)); // Check if the morph has any of the listed categories. if (runtime.isBlackList && hasCat) { return(false); } if (hasCat) { hasAnyCats = true; } } if (!runtime.isBlackList && !hasAnyCats) { return(false); //if it's a white list make sure at least one category is present } return(true); }