//Collect currently active filters into a Dictionary<string, object> which is then be passed to //filter_craft on CraftData (which does the actual filtering work). public void filter_craft() { if (CraftData.cache != null && !exclude_stock_craft && !stock_craft_loaded) //load stock craft if they've not yet been loaded and option to exclude stock is switched off. { CraftData.load_stock_craft_from_files(); } search_criteria.Clear(); search_criteria.Add("search", search_string); search_criteria.Add("type", selected_types); if (kerbalx_mode) { List <Version> s_vers = KerbalX.selected_versions; if (s_vers.Count > 0) { search_criteria.Add("versions", s_vers); } } else { List <string> s_tags = Tags.selected_tags(); List <string> a_tags = Tags.archived_tags(); if (s_tags.Count > 0) { search_criteria.Add("tags", s_tags); } if (a_tags.Count > 0) { search_criteria.Add("archived_tags", a_tags); } } search_criteria.Add("tag_filter_mode", tag_filter_mode); search_criteria.Add("sort", sort_opt); search_criteria.Add("reverse_sort", reverse_sort); search_criteria.Add("exclude_stock", exclude_stock_craft); CraftData.filter_craft(search_criteria); //pass options to filter logic }