public static Pair <string, Color> GetPartConditionLabel(Pawn pawn, BodyPartRecord part) { float partHealth = pawn.health.hediffSet.GetPartHealth(part); float maxHealth = part.def.GetMaxHealth(pawn); float num = partHealth / maxHealth; string first = string.Empty; Color second = Color.white; if (partHealth <= 0f) { Hediff_MissingPart hediff_MissingPart = null; List <Hediff_MissingPart> missingPartsCommonAncestors = pawn.health.hediffSet.GetMissingPartsCommonAncestors(); for (int i = 0; i < missingPartsCommonAncestors.Count; i++) { if (missingPartsCommonAncestors[i].Part == part) { hediff_MissingPart = missingPartsCommonAncestors[i]; break; } } if (hediff_MissingPart == null) { bool fresh = false; if (hediff_MissingPart != null && hediff_MissingPart.IsFreshNonSolidExtremity) { fresh = true; } bool solid = part.def.IsSolid(part, pawn.health.hediffSet.hediffs); first = HealthUtility.GetGeneralDestroyedPartLabel(part, fresh, solid); second = Color.gray; } else { first = hediff_MissingPart.LabelCap; second = hediff_MissingPart.LabelColor; } } else if (num < 0.4f) { first = "SeriouslyImpaired".Translate(); second = HealthUtility.DarkRedColor; } else if (num < 0.7f) { first = "Impaired".Translate(); second = HealthUtility.ImpairedColor; } else if (num < 0.999f) { first = "SlightlyImpaired".Translate(); second = HealthUtility.SlightlyImpairedColor; } else { first = "GoodCondition".Translate(); second = HealthUtility.GoodConditionColor; } return(new Pair <string, Color>(first, second)); }
public static Pair <string, Color> GetPartConditionLabel(Pawn pawn, BodyPartRecord part) { float partHealth = pawn.health.hediffSet.GetPartHealth(part); float maxHealth = part.def.GetMaxHealth(pawn); float num = partHealth / maxHealth; string empty = string.Empty; Color white = Color.white; if (partHealth <= 0.0) { Hediff_MissingPart hediff_MissingPart = null; List <Hediff_MissingPart> missingPartsCommonAncestors = pawn.health.hediffSet.GetMissingPartsCommonAncestors(); int num2 = 0; while (num2 < missingPartsCommonAncestors.Count) { if (missingPartsCommonAncestors[num2].Part != part) { num2++; continue; } hediff_MissingPart = missingPartsCommonAncestors[num2]; break; } if (hediff_MissingPart == null) { bool fresh = false; if (hediff_MissingPart != null && hediff_MissingPart.IsFreshNonSolidExtremity) { fresh = true; } bool solid = part.def.IsSolid(part, pawn.health.hediffSet.hediffs); empty = HealthUtility.GetGeneralDestroyedPartLabel(part, fresh, solid); white = Color.gray; } else { empty = hediff_MissingPart.LabelCap; white = hediff_MissingPart.LabelColor; } } else if (num < 0.40000000596046448) { empty = "SeriouslyImpaired".Translate(); white = HealthUtility.DarkRedColor; } else if (num < 0.699999988079071) { empty = "Impaired".Translate(); white = HealthUtility.ImpairedColor; } else if (num < 0.99900001287460327) { empty = "SlightlyImpaired".Translate(); white = HealthUtility.SlightlyImpairedColor; } else { empty = "GoodCondition".Translate(); white = HealthUtility.GoodConditionColor; } return(new Pair <string, Color>(empty, white)); }