rimworld-animations/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_AgeRangeGendered.cs
2025-10-02 08:53:32 -07:00

52 lines
2.2 KiB
C#

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_AgeRangeGendered : BaseAnimationOffset
{
public List<BodyTypeOffset_AgeRange> offsetsMale;
public List<BodyTypeOffset_AgeRange> offsetsFemale;
public override Vector3? getOffset(Pawn pawn)
{
List<BodyTypeOffset_AgeRange> pawnOffsets = (pawn.gender == Gender.Male ? offsetsMale : offsetsFemale);
return pawnOffsets.Find(x => x.bodyType == pawn.story.bodyType && x.ageRange.Includes(pawn.ageTracker.AgeBiologicalYears))?.offset
?? (pawn.ageTracker.AgeBiologicalYears < pawnOffsets.First().ageRange.min ? pawnOffsets.First().offset : pawnOffsets.Last().offset);
}
public override int? getRotation(Pawn pawn)
{
List<BodyTypeOffset_AgeRange> pawnOffsets = (pawn.gender == Gender.Male ? offsetsMale : offsetsFemale);
return pawnOffsets.Find(x => x.bodyType == pawn.story.bodyType && x.ageRange.Includes(pawn.ageTracker.AgeBiologicalYears))?.rotation
?? (pawn.ageTracker.AgeBiologicalYears < pawnOffsets.First().ageRange.min ? pawnOffsets.First().rotation : pawnOffsets.Last().rotation);
}
public override Vector3? getScale(Pawn pawn)
{
List<BodyTypeOffset_AgeRange> pawnOffsets = (pawn.gender == Gender.Male ? offsetsMale : offsetsFemale);
return pawnOffsets.Find(x => x.bodyType == pawn.story.bodyType && x.ageRange.Includes(pawn.ageTracker.AgeBiologicalYears))?.scale
?? (pawn.ageTracker.AgeBiologicalYears < pawnOffsets.First().ageRange.min ? pawnOffsets.First().scale : pawnOffsets.Last().scale);
}
public override bool appliesToPawn(Pawn pawn)
{
if (!base.appliesToPawn(pawn)) return false;
List<BodyTypeOffset_AgeRange> pawnOffsets = (pawn.gender == Gender.Male ? offsetsMale : offsetsFemale);
return pawnOffsets.Any(x => x.bodyType == pawn.story.bodyType);
}
}
public class BodyTypeOffset_AgeRange : BodyTypeOffset
{
public FloatRange ageRange;
}
}