diff --git a/FilterExtension/Core.cs b/FilterExtension/Core.cs index 048d9c62..aac38bf7 100644 --- a/FilterExtension/Core.cs +++ b/FilterExtension/Core.cs @@ -118,11 +118,18 @@ private void getConfigs() private void getPartData() { List modNames = new List(); + Editor.blackListedParts = new HashSet(); foreach (AvailablePart p in PartLoader.LoadedPartsList) { if (p == null) continue; + if (string.Equals(p.TechRequired, "Unresearchable", StringComparison.OrdinalIgnoreCase)) + { + Log(p.name); + Editor.blackListedParts.Add(p.name); + continue; + } if (string.IsNullOrEmpty(p.partUrl)) RepairAvailablePartUrl(p); @@ -135,7 +142,9 @@ private void getPartData() // associate the path to the part if (!partPathDict.ContainsKey(p.name)) + { partPathDict.Add(p.name, p.partUrl); + } else Log(p.name + " duplicated part key in part path dictionary", LogLevel.Warn); diff --git a/FilterExtension/Editor.cs b/FilterExtension/Editor.cs index 19cad3cf..54e205dd 100644 --- a/FilterExtension/Editor.cs +++ b/FilterExtension/Editor.cs @@ -77,12 +77,6 @@ private IEnumerator editorInit() if (HighLogic.CurrentGame.Parameters.CustomParams().debug) Core.Log("Starting on late categories", Core.LogLevel.Log); - // generate the set of parts to block - if (blackListedParts == null) - { - findPartsToBlock(); - } - // this is to be used for altering subcategories in a category added by another mod foreach (customCategory c in Core.Instance.Categories) { @@ -176,43 +170,6 @@ public static void setSelectedCategory() } } - private void findPartsToBlock() - { - blackListedParts = new HashSet(); - - // Only checking the category which should be Filter by Function (should I find FbF explicitly?) - PartCategorizer.Category mainCat = PartCategorizer.Instance.filters[0]; - - foreach (AvailablePart part in PartLoader.LoadedPartsList) - { - if (part.category == PartCategories.none && !checkPartVisible(part, mainCat)) - { - blackListedParts.Add(part.name); - } - } - - // since this wasn't initialised until now, the already created categories may be completely empty - // culling them now - PartCategorizer.Category cat; - for (int i = PartCategorizer.Instance.categories.Count - 1; i >= 0; --i) - { - cat = PartCategorizer.Instance.categories[i]; - - for (int j = cat.subcategories.Count - 1; j >= 0; --j) - { - Core.Log(cat.subcategories[j]); - Core.Log(cat.subcategories[j].button.categoryName); - // if (checkIsEmptyCategory(cat.subcategories[j])) - // { - // cat.subcategories[j].DeleteSubcategory(); - // } - } - // if (cat.subcategories.Count > 0) - // continue; - // cat.DeleteCategory(); - } - } - private bool checkPartVisible(AvailablePart part, PartCategorizer.Category category) { for (int i = 0; i < category.subcategories.Count; ++i) diff --git a/FilterExtension/Utility/PartType.cs b/FilterExtension/Utility/PartType.cs index 5d4978dd..792c0efa 100644 --- a/FilterExtension/Utility/PartType.cs +++ b/FilterExtension/Utility/PartType.cs @@ -394,7 +394,9 @@ public static bool checkFolder(AvailablePart part, string[] value) { string path; if (Core.Instance.partPathDict.TryGetValue(part.name, out path)) + { return value.Contains(path.Substring(0, path.IndexOfAny(new char[] { '\\', '/' }))); + } return false; } diff --git a/GameData/000_FilterExtensions/FilterExtensions.dll b/GameData/000_FilterExtensions/FilterExtensions.dll index 0fb34f21..f56f53ae 100644 Binary files a/GameData/000_FilterExtensions/FilterExtensions.dll and b/GameData/000_FilterExtensions/FilterExtensions.dll differ