public static ResourceTypes[] GetRequirements(CraftedResourcesType type)
    {
        var requirements = new List <ResourceTypes>();

        if (type.ToString().ToLower()[0] == 's')
        {
            requirements.AddRange(new ResourceTypes[] { ResourceTypes.Iron, ResourceTypes.Magnesium, ResourceTypes.Chromite });
        }
        else if (type.ToString().ToLower()[0] == 'b')
        {
            requirements.AddRange(new ResourceTypes[] { ResourceTypes.Coal, ResourceTypes.Cobalt });
        }

        switch (type)
        {
        case CraftedResourcesType.S_316:
            requirements.Add(ResourceTypes.Molybdenum);
            break;

        case CraftedResourcesType.S_316Ti:
            requirements.Add(ResourceTypes.Titanium);
            break;

        case CraftedResourcesType.S_430:
            requirements.Add(ResourceTypes.Nickel);
            break;

        case CraftedResourcesType.S_440C:
            requirements.Add(ResourceTypes.Carbon);
            break;

        case CraftedResourcesType.B_Lithium:
            requirements.Add(ResourceTypes.Lithium);
            break;

        case CraftedResourcesType.B_Plasma:
            requirements.Add(ResourceTypes.Plasma);
            break;
        }

        return(requirements.ToArray());
    }
 protected override bool IsValidType(CraftedResourcesType type)
 {
     return(type.ToString().Split('_')[0] == "B");
 }
 protected CraftedResources(CraftedResourcesType type, Dictionary <ResourceTypes, int> requires, List <Components> buildsInto)
 {
     if (!IsValidType(type))
     {
         throw new InvalidOperationException("The given type if crafted resource ('" + type.ToString() + "') is not valid for the casted type");
     }
     else
     {
         Type       = type;
         BuildsInto = buildsInto ?? new List <Components>();
         Requires   = requires ?? new Dictionary <ResourceTypes, int>();
     }
 }