private List <ThingStuffPairWithQuality> GeneratePossibleDefs(ThingSetMakerParams parms, out float totalMarketValue)
        {
            IEnumerable <ThingDef> enumerable = AllowedThingDefs(parms);

            if (!enumerable.Any())
            {
                totalMarketValue = 0f;
                return(new List <ThingStuffPairWithQuality>());
            }
            TechLevel        techLevel        = parms.techLevel ?? TechLevel.Undefined;
            IntRange         countRange       = parms.countRange ?? new IntRange(1, int.MaxValue);
            FloatRange       floatRange       = parms.totalMarketValueRange ?? FloatRange.Zero;
            float            maxMass          = parms.maxTotalMass ?? float.MaxValue;
            QualityGenerator qualityGenerator = parms.qualityGenerator ?? QualityGenerator.BaseGen;

            totalMarketValue = floatRange.RandomInRange;
            return(ThingSetMakerByTotalStatUtility.GenerateDefsWithPossibleTotalValue_NewTmp3(countRange, totalMarketValue, enumerable, techLevel, qualityGenerator, GetMinValue, GetMaxValue, GetSingleThingValue, null, 100, maxMass, parms.allowNonStackableDuplicates.GetValueOrDefault(true), totalMarketValue * (parms.minSingleItemMarketValuePct ?? 0f)));
        }
        private List <ThingStuffPairWithQuality> GeneratePossibleDefs(ThingSetMakerParams parms, out float totalNutrition)
        {
            IEnumerable <ThingDef> enumerable = AllowedThingDefs(parms);

            if (!enumerable.Any())
            {
                totalNutrition = 0f;
                return(new List <ThingStuffPairWithQuality>());
            }
            IntRange         countRange       = parms.countRange ?? new IntRange(1, int.MaxValue);
            FloatRange       floatRange       = parms.totalNutritionRange ?? FloatRange.Zero;
            TechLevel        techLevel        = parms.techLevel ?? TechLevel.Undefined;
            float            maxMass          = parms.maxTotalMass ?? float.MaxValue;
            QualityGenerator qualityGenerator = parms.qualityGenerator ?? QualityGenerator.BaseGen;

            totalNutrition = floatRange.RandomInRange;
            int numMeats    = enumerable.Count((ThingDef x) => x.IsMeat);
            int numLeathers = enumerable.Count((ThingDef x) => x.IsLeather);

            return(ThingSetMakerByTotalStatUtility.GenerateDefsWithPossibleTotalValue_NewTmp3(weightSelector: (ThingDef x) => ThingSetMakerUtility.AdjustedBigCategoriesSelectionWeight(x, numMeats, numLeathers), countRange: countRange, totalValue: totalNutrition, allowed: enumerable, techLevel: techLevel, qualityGenerator: qualityGenerator, getMinValue: (ThingStuffPairWithQuality x) => x.GetStatValue(StatDefOf.Nutrition), getMaxValue: (ThingStuffPairWithQuality x) => x.GetStatValue(StatDefOf.Nutrition) * (float)x.thing.stackLimit, getSingleThingValue: (ThingStuffPairWithQuality x) => x.GetStatValue(StatDefOf.Nutrition), tries: 100, maxMass: maxMass));
        }