/// <summary> /// operation - move part data from thing to hediff /// </summary> public static Hediff recipePartAdder(RecipeDef recipe, Pawn pawn, BodyPartRecord part, List <Thing> ingredients) { Hediff hd = HediffMaker.MakeHediff(recipe.addsHediff, pawn, part); Thing thing = ingredients.Find(x => x.def.defName == recipe.addsHediff.defName); CompThingBodyPart CompThing = thing.TryGetComp <rjw.CompThingBodyPart>(); CompHediffBodyPart CompHediff = hd.TryGetComp <rjw.CompHediffBodyPart>(); if (CompHediff != null && CompThing != null) { if (CompThing.SizeBase > 0) { CompHediff.FluidType = CompThing.FluidType; CompHediff.FluidAmmount = CompThing.FluidAmmount; CompHediff.FluidModifier = CompThing.FluidModifier; CompHediff.SizeBase = CompThing.SizeBase; CompHediff.SizeOwner = CompThing.SizeOwner; CompHediff.RaceOwner = CompThing.RaceOwner; CompHediff.PreviousOwner = CompThing.PreviousOwner; CompHediff.Eggs = CompThing.Eggs; CompHediff.updatesize(); } else //not initialised things, drop pods, trader? //TODO: figure out how to populate rjw parts at gen { hd = MakePart(hd.def, pawn, part); } } return(hd); }
/// <summary> /// operation - move part data from hediff to thing /// </summary> public static Thing recipePartRemover(Hediff hd) { Thing thing = ThingMaker.MakeThing(hd.def.spawnThingOnRemoved); CompThingBodyPart CompThing = thing.TryGetComp <rjw.CompThingBodyPart>(); CompHediffBodyPart CompHediff = hd.TryGetComp <rjw.CompHediffBodyPart>(); if (CompThing != null && CompHediff != null) { CompThing.FluidType = CompHediff.FluidType; CompThing.FluidAmmount = CompHediff.FluidAmmount; CompThing.FluidModifier = CompHediff.FluidModifier; CompThing.Size = CompHediff.Size; CompThing.SizeBase = CompHediff.SizeBase; CompThing.SizeOwner = CompHediff.SizeOwner; CompThing.RaceOwner = CompHediff.RaceOwner; CompThing.PreviousOwner = xxx.get_pawnname(CompHediff.Pawn); CompThing.Eggs = CompHediff.Eggs; } return(thing); }