private static Designator_Build FindAllowedDesignatorRecursive(Designator designator, BuildableDef buildable, bool mustBeVisible) { if (!Current.Game.Rules.DesignatorAllowed(designator)) { return(null); } if (mustBeVisible && !designator.Visible) { return(null); } Designator_Build designator_Build = designator as Designator_Build; if (designator_Build != null && designator_Build.PlacingDef == buildable) { return(designator_Build); } Designator_Dropdown designator_Dropdown = designator as Designator_Dropdown; if (designator_Dropdown != null) { for (int i = 0; i < designator_Dropdown.Elements.Count; i++) { Designator_Build designator_Build2 = BuildCopyCommandUtility.FindAllowedDesignatorRecursive(designator_Dropdown.Elements[i], buildable, mustBeVisible); if (designator_Build2 != null) { return(designator_Build2); } } } return(null); }
public static Designator_Build FindAllowedDesignator(BuildableDef buildable, bool mustBeVisible = true) { List <DesignationCategoryDef> allDefsListForReading = DefDatabase <DesignationCategoryDef> .AllDefsListForReading; for (int i = 0; i < allDefsListForReading.Count; i++) { List <Designator> allResolvedDesignators = allDefsListForReading[i].AllResolvedDesignators; for (int j = 0; j < allResolvedDesignators.Count; j++) { Designator_Build designator_Build = BuildCopyCommandUtility.FindAllowedDesignatorRecursive(allResolvedDesignators[j], buildable, mustBeVisible); if (designator_Build != null) { return(designator_Build); } } } return(null); }