Exemple #1
0
		public static List<Thing> generateThing(double valueBase, string resourceOfThing)
		{
			regen:
			List<Thing> things = new List<Thing>();
			ThingSetMaker thingSetMaker = new ThingSetMaker_MarketValue();
			ThingSetMakerParams param = new ThingSetMakerParams();
			param.totalMarketValueRange = new FloatRange((float)(valueBase-300),(float)(valueBase+300));
			param.filter = new ThingFilter();
			param.techLevel = FactionColonies.getPlayerColonyFaction().def.techLevel;

			switch (resourceOfThing)
			{
				case "food": //food
					param.filter.SetAllow(ThingCategoryDefOf.FoodMeals, true);
					param.countRange = new IntRange(1, 1);
					break;
				case "weapons": //weapons
					param.filter.SetAllow(ThingCategoryDefOf.Weapons, true);
					param.qualityGenerator = QualityGenerator.Gift;
					param.totalMarketValueRange = new FloatRange((float)(valueBase - valueBase*.5), (float)(valueBase * 2));
					param.countRange = new IntRange(1, 1);
					break;
				case "apparel": //apparel
					param.filter.SetAllow(ThingCategoryDefOf.Apparel, true);
					param.qualityGenerator = QualityGenerator.Gift;
					param.totalMarketValueRange = new FloatRange((float)(valueBase - valueBase * .5), (float)(valueBase * 2));
					param.countRange = new IntRange(1, 1);
					break;
				case "armor": //armor
					param.qualityGenerator = QualityGenerator.Gift;
					param.filter.SetAllow(DefDatabase<ThingCategoryDef>.GetNamed("ApparelArmor"), true);
					param.filter.SetAllow(ThingCategoryDefOf.Apparel, true);
					param.countRange = new IntRange(1, 1);
					param.totalMarketValueRange = new FloatRange((float)(valueBase - valueBase * .5), (float)(valueBase*2));
					break;
				case "animals": //animals
					thingSetMaker = new ThingSetMaker_Animal();
					param.techLevel = TechLevel.Undefined;
					param.totalMarketValueRange = new FloatRange((float)(valueBase - valueBase * .5), (float)(valueBase * 1.5));
					//param.countRange = new IntRange(1,4);
					break;
				case "logging": //Logging
					param.filter.SetAllow(ThingDefOf.WoodLog, true);
					param.countRange = new IntRange(1, 10);
					break;
				case "mining": //Mining
					param.filter.SetAllow(StuffCategoryDefOf.Metallic, true);
					param.filter.SetAllow(ThingDefOf.Silver, false);
					//Android shit?
					param.filter.SetAllow(DefDatabase<ThingDef>.GetNamedSilentFail("Teachmat"), false);
					//Remove RimBees Beeswax
					param.filter.SetAllow(DefDatabase<StuffCategoryDef>.GetNamedSilentFail("RB_Waxy"), false);
					//Remove Alpha Animals skysteel
					param.filter.SetAllow(DefDatabase<ThingDef>.GetNamedSilentFail("AA_SkySteel"), false);
					param.countRange = new IntRange(1, 10);
					break;
				case "drugs": //drugs
					param.filter.SetAllow(ThingCategoryDefOf.Drugs, true);
					param.countRange = new IntRange(1, 2);
					break;
				default: //log error
					Log.Message("This is an error. Report this to the dev. generateThing - nonexistent case");
					Log.Message(resourceOfThing);
					break;
			}

			//Log.Message(resourceID.ToString());


			//thingSetMaker.root
			things = thingSetMaker.Generate(param);
			if(PaymentUtil.returnValueOfTithe(things) < param.totalMarketValueRange.Value.min)
			{
				goto regen;
			}

			return things;
		}