public CategoryInstance(CategoryNode protoC, Dictionary <string, SubcategoryNode> allSubCats) { Name = Localizer.Format(protoC.CategoryName); if (string.IsNullOrEmpty(Name)) { Logger.Log("Category name is blank", Logger.LogLevel.Warn); return; } Icon = protoC.IconName; Colour = protoC.Colour; Type = protoC.Type; Behaviour = protoC.Behaviour; Subcategories = new List <SubCategoryInstance>(); foreach (SubCategoryItem sci in protoC.SubCategories) { if (allSubCats.TryGetValue(sci.SubcategoryName, out SubcategoryNode protoSC) && protoSC != null) { var node = new SubcategoryNode(protoSC, sci.ApplyTemplate ? protoC : null); var instance = new SubCategoryInstance(node, PartLoader.LoadedPartsList); if (instance.Valid) { Subcategories.Add(instance); } } } if (!Subcategories.Any()) { throw new ArgumentException($"No subcategories valid, abandon instantiation of {Name}"); } }
public static RUI.Icons.Selectable.Icon GetIcon(SubCategoryInstance subcat) { if (Icon_Alias.ContainsKey(subcat.Name)) { return(GetIcon(Icon_Alias[subcat.Name])); } return(GetIcon(subcat.Icon)); }