using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnityEngine; using Verse; namespace Rimworld_Animations { public class AnimationOffset_Genes : BaseAnimationOffset { public List offsets; public override Vector3? getOffset(Pawn pawn) { return offsets.Find(x => x.bodyType == pawn.story.bodyType && pawn.genes.GenesListForReading.ContainsAny(gene => gene.def == x.geneDef))?.offset ?? offsets.Last().offset; } public override int? getRotation(Pawn pawn) { return offsets.Find(x => x.bodyType == pawn.story.bodyType && pawn.genes.GenesListForReading.ContainsAny(gene => gene.def == x.geneDef))?.rotation ?? offsets.Last().rotation; } public override Vector3? getScale(Pawn pawn) { return offsets.Find(x => x.bodyType == pawn.story.bodyType && pawn.genes.GenesListForReading.ContainsAny(gene => gene.def == x.geneDef))?.scale ?? offsets.Last().scale; } public override bool appliesToPawn(Pawn pawn) { if (!base.appliesToPawn(pawn)) return false; return offsets.Any(x => x.bodyType == pawn.story.bodyType && pawn.genes.GenesListForReading.ContainsAny(gene => gene.def == x.geneDef)); } } public class BodyTypeOffset_Genes : BodyTypeOffset { public GeneDef geneDef; } }