2022-10-24 01:02:02 +00:00
|
|
|
|
using AlienRace;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
using Verse;
|
|
|
|
|
|
|
|
|
|
namespace RJW_Menstruation
|
|
|
|
|
{
|
|
|
|
|
public static class HARCompatibility
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
public static bool IsHAR(this Pawn pawn)
|
|
|
|
|
{
|
|
|
|
|
if (!Configurations.HARActivated) return false;
|
|
|
|
|
return pawn?.def is ThingDef_AlienRace;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void CopyHARProperties(Pawn baby, Pawn original)
|
|
|
|
|
{
|
|
|
|
|
AlienPartGenerator.AlienComp babyHARComp = baby?.TryGetComp<AlienPartGenerator.AlienComp>();
|
|
|
|
|
AlienPartGenerator.AlienComp originalHARComp = original?.TryGetComp<AlienPartGenerator.AlienComp>();
|
|
|
|
|
if (babyHARComp == null || originalHARComp == null) return;
|
|
|
|
|
|
|
|
|
|
foreach(KeyValuePair<string, AlienPartGenerator.ExposableValueTuple<Color, Color>> channel in originalHARComp.ColorChannels)
|
|
|
|
|
{
|
|
|
|
|
babyHARComp.OverwriteColorChannel(channel.Key, channel.Value.first, channel.Value.second);
|
|
|
|
|
}
|
2022-11-25 01:24:07 +00:00
|
|
|
|
babyHARComp.headVariant = originalHARComp.headVariant;
|
|
|
|
|
babyHARComp.bodyVariant = originalHARComp.bodyVariant;
|
2022-10-24 01:02:02 +00:00
|
|
|
|
babyHARComp.headMaskVariant = originalHARComp.headMaskVariant;
|
|
|
|
|
babyHARComp.bodyMaskVariant = originalHARComp.bodyMaskVariant;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// HAR doesn't populate variants until the graphics are called for, so this has to happen late
|
|
|
|
|
public static void CopyHARPropertiesPostBirth(Pawn baby, Pawn original)
|
|
|
|
|
{
|
|
|
|
|
AlienPartGenerator.AlienComp babyHARComp = baby?.TryGetComp<AlienPartGenerator.AlienComp>();
|
|
|
|
|
AlienPartGenerator.AlienComp originalHARComp = original?.TryGetComp<AlienPartGenerator.AlienComp>();
|
|
|
|
|
if (babyHARComp == null || originalHARComp == null) return;
|
|
|
|
|
if (originalHARComp.addonVariants != null) // Testing has shown that the addons are valid by this point, but it's better to be safe
|
|
|
|
|
babyHARComp.addonVariants = new List<int>(originalHARComp.addonVariants);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|