public static void LoadFace(ref CustomPawn __result, SaveRecordPawnV3 record) { if (!SaveRecordPawnV3_Postfix.LoadedPawns.Keys.Contains(record)) { return; } Pawn pawn = __result.Pawn; if (!pawn.HasCompFace()) { return; } PawnFace pawnFace = SaveRecordPawnV3_Postfix.LoadedPawns[record].Face; if (pawn.GetCompFace(out CompFace compFace)) { if (pawnFace == null) { pawnFace = new PawnFace(compFace, Faction.OfPlayer.def, false); } compFace.SetPawnFace(pawnFace); // ReSharper disable once PossibleNullReferenceException pawn.story.hairColor = compFace.PawnFace.HairColor; } }
public static void ExposeFaceData(SaveRecordPawnV3 __instance) { if (SavedPawns.Keys.Contains(__instance.id) && Scribe.mode == LoadSaveMode.Saving) { CustomPawn customPawn = SavedPawns[__instance.id] as CustomPawn; if (!customPawn?.Pawn.HasCompFace() == true) { return; } if (customPawn != null) { SaveRecordFaceV3 face = new SaveRecordFaceV3(customPawn.Pawn); face.ExposeData(); } } else if (Scribe.mode == LoadSaveMode.LoadingVars) { SaveRecordFaceV3 face = new SaveRecordFaceV3(); face.ExposeData(); LoadedPawns.Add(__instance, face); } }