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)); }