From 8c7db662e4fa5592c7c7c2e85291ade804b62d2c Mon Sep 17 00:00:00 2001 From: Crzyrndm Date: Sat, 27 Dec 2014 11:55:42 +1300 Subject: [PATCH] CSV mods and categories for subC's --- FilterExtension/Categoriser/PartType.cs | 18 ++++++ FilterExtension/Category.cs | 9 +-- FilterExtension/Core.cs | 4 +- FilterExtension/subCategory.cs | 57 ++++++++++-------- .../Filter definitions/TestCategoryFunc.cfg | 4 +- .../Filter definitions/TestCategoryFunc2.cfg | 4 +- .../Filter Extensions/FilterExtensions.dll | Bin 25600 -> 25600 bytes 7 files changed, 60 insertions(+), 36 deletions(-) diff --git a/FilterExtension/Categoriser/PartType.cs b/FilterExtension/Categoriser/PartType.cs index a1421799..c8dcf39d 100644 --- a/FilterExtension/Categoriser/PartType.cs +++ b/FilterExtension/Categoriser/PartType.cs @@ -138,6 +138,24 @@ internal static bool checkFolder(AvailablePart part, string value) return folderCheck; } + internal static bool checkFolder(AvailablePart part, string[] values) + { + if (part.name == "PotatoRoid") + return false; + + if (Core.partFolderDict.ContainsKey(part.name)) + { + foreach (string s in values) + { + if (Core.partFolderDict[part.name] == s.Trim()) + return true; + } + } + Debug.Log("[Filter Extensions] Unable to assign a mod to the part " + part.title); + + return false; + } + public static int partSize(AvailablePart part) { int size = -1; diff --git a/FilterExtension/Category.cs b/FilterExtension/Category.cs index 14540b41..bc4c9dcc 100644 --- a/FilterExtension/Category.cs +++ b/FilterExtension/Category.cs @@ -13,8 +13,8 @@ class customCategory internal string iconName; internal Color colour; internal string type; - internal string value; // mod folder name for mod type categories - internal string location; // filter == top set, category = custom section + internal string[] value; // mod folder name for mod type categories + // internal string location; // filter == top set, category = custom section public customCategory(ConfigNode node) { @@ -22,8 +22,9 @@ public customCategory(ConfigNode node) iconName = node.GetValue("icon"); convertToColor(node.GetValue("colour")); type = node.GetValue("type"); - value = node.GetValue("value"); - location = node.GetValue("location"); + string temp = node.GetValue("value"); + if (!string.IsNullOrEmpty(temp)) + value = temp.Split(','); } internal void initialise() diff --git a/FilterExtension/Core.cs b/FilterExtension/Core.cs index 851df24d..de892869 100644 --- a/FilterExtension/Core.cs +++ b/FilterExtension/Core.cs @@ -131,7 +131,7 @@ private bool checkForConflicts(subCategory sCToCheck) { foreach (subCategory sC in subCategories) // iterate through the already added sC's { - if (sCToCheck.category == sC.category) + if (sCToCheck.categories == sC.categories) { if (compareFilterLists(sC.filters, sCToCheck.filters)) // check for duplicated filters { @@ -219,7 +219,6 @@ private void loadIcons() if (!texDict.ContainsKey(t.name)) texDict.Add(t.name, t); } - Debug.Log("just a checkpoint"); foreach (GameDatabase.TextureInfo t in texList) { bool simple = false; @@ -237,7 +236,6 @@ private void loadIcons() if (!PartCategorizer.Instance.iconDictionary.ContainsKey(icon.name)) PartCategorizer.Instance.iconDictionary.Add(icon.name, icon); } - print(texList.Count); } internal static PartCategorizer.Icon getIcon(string name) diff --git a/FilterExtension/subCategory.cs b/FilterExtension/subCategory.cs index 0f82558c..6a840031 100644 --- a/FilterExtension/subCategory.cs +++ b/FilterExtension/subCategory.cs @@ -7,7 +7,7 @@ namespace FilterExtensions { class subCategory { - internal string category; // parent category + internal string[] categories; // parent category internal string subCategoryTitle; // title of this subcategory internal string oldTitle; // title generated for the auto extending categories to search by internal string iconName; // default icon to use @@ -16,7 +16,7 @@ class subCategory public subCategory(ConfigNode node) { - category = node.GetValue("category"); + categories = node.GetValue("category").Split(','); subCategoryTitle = node.GetValue("title"); iconName = node.GetValue("icon"); oldTitle = node.GetValue("oldTitle"); @@ -41,33 +41,40 @@ internal bool checkFilters(AvailablePart part) internal void initialise() { - PartCategorizer.Icon icon; - if (string.IsNullOrEmpty(iconName)) + foreach (string s in categories) { - Debug.Log("[Filter Extensions] " + this.subCategoryTitle + " missing icon reference"); - icon = PartCategorizer.Instance.fallbackIcon; - } - else - { - icon = Core.getIcon(iconName); - } - if (filter) - { - PartCategorizer.Category Filter = PartCategorizer.Instance.filters.Find(f => f.button.categoryName == category); - PartCategorizer.AddCustomSubcategoryFilter(Filter, subCategoryTitle, icon, p => checkFilters(p)); - } - else if (!string.IsNullOrEmpty(oldTitle)) - { - List subCategories = PartCategorizer.Instance.filters.Find(f => f.button.categoryName == category).subcategories; - if (string.IsNullOrEmpty(subCategoryTitle)) - subCategories.Remove(subCategories.Find(m => m.button.categoryName == oldTitle)); + Debug.Log(s); + PartCategorizer.Icon icon; + if (string.IsNullOrEmpty(iconName)) + { + Debug.Log("[Filter Extensions] " + this.subCategoryTitle + " missing icon reference"); + icon = PartCategorizer.Instance.fallbackIcon; + } else { - PartCategorizerButton but = subCategories.FirstOrDefault(sC => sC.button.categoryName == oldTitle).button; - if (but != null) + icon = Core.getIcon(iconName); + } + Debug.Log("1"); + if (filter) + { + Debug.Log("2"); + PartCategorizer.Category Filter = PartCategorizer.Instance.filters.FirstOrDefault(f => f.button.categoryName == s.Trim()); + Debug.Log("3"); + PartCategorizer.AddCustomSubcategoryFilter(Filter, subCategoryTitle, icon, p => checkFilters(p)); + } + else if (!string.IsNullOrEmpty(oldTitle)) + { + List subCategories = PartCategorizer.Instance.filters.Find(f => f.button.categoryName == s.Trim()).subcategories; + if (string.IsNullOrEmpty(subCategoryTitle)) + subCategories.Remove(subCategories.Find(m => m.button.categoryName == oldTitle)); + else { - but.categoryName = subCategoryTitle; - but.SetIcon(icon); + PartCategorizerButton but = subCategories.FirstOrDefault(sC => sC.button.categoryName == oldTitle).button; + if (but != null) + { + but.categoryName = subCategoryTitle; + but.SetIcon(icon); + } } } } diff --git a/GameData/Filter Extensions/Filter definitions/TestCategoryFunc.cfg b/GameData/Filter Extensions/Filter definitions/TestCategoryFunc.cfg index 5c94b92c..23799c28 100644 --- a/GameData/Filter Extensions/Filter definitions/TestCategoryFunc.cfg +++ b/GameData/Filter Extensions/Filter definitions/TestCategoryFunc.cfg @@ -10,8 +10,8 @@ CATEGORY SUBCATEGORY { - category = TestSQUAD - title = TestCustom1 + category = TestSQUAD, TestCategory + title = TestCustom11 icon = R&D_node_icon_advrocketry FILTER { diff --git a/GameData/Filter Extensions/Filter definitions/TestCategoryFunc2.cfg b/GameData/Filter Extensions/Filter definitions/TestCategoryFunc2.cfg index 2cea39bd..e3c4a4b8 100644 --- a/GameData/Filter Extensions/Filter definitions/TestCategoryFunc2.cfg +++ b/GameData/Filter Extensions/Filter definitions/TestCategoryFunc2.cfg @@ -2,9 +2,9 @@ CATEGORY { title = TestNASA icon = R&D_node_icon_experimentalmotors - colour = #FF00FF00 + colour = #FF00F000 type = mod - value = NASAmission + value = NASAmission, NearFuturePropulsion location = filter } diff --git a/GameData/Filter Extensions/FilterExtensions.dll b/GameData/Filter Extensions/FilterExtensions.dll index 4788fcf450f0f1ba6ea0fa09d7e6e4569fc938f9..f2884979cd1642ab4efc53b8c8556cd2f0d5d0a0 100644 GIT binary patch literal 25600 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 literal 25600 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 SmS4sE