Example #1
0
        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}");
            }
        }
Example #2
0
 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));
 }