Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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));
        }