static PawnNameColorUtility()
 {
     PawnNameColorUtility.ColorsNeutral     = new List <Color>();
     PawnNameColorUtility.ColorsHostile     = new List <Color>();
     PawnNameColorUtility.ColorsPrisoner    = new List <Color>();
     PawnNameColorUtility.ColorBaseNeutral  = new Color(0.4f, 0.85f, 0.9f);
     PawnNameColorUtility.ColorBaseHostile  = new Color(0.9f, 0.2f, 0.2f);
     PawnNameColorUtility.ColorBasePrisoner = new Color(1f, 0.85f, 0.5f);
     PawnNameColorUtility.ColorColony       = new Color(0.9f, 0.9f, 0.9f);
     PawnNameColorUtility.ColorWildMan      = new Color(1f, 0.8f, 1f);
     PawnNameColorUtility.ColorShifts       = new List <Color>
     {
         new Color(1f, 1f, 1f),
         new Color(0.8f, 1f, 1f),
         new Color(0.8f, 0.8f, 1f),
         new Color(0.8f, 0.8f, 0.8f),
         new Color(1.2f, 1f, 1f),
         new Color(0.8f, 1.2f, 1f),
         new Color(0.8f, 1.2f, 1.2f),
         new Color(1.2f, 1.2f, 1.2f),
         new Color(1f, 1.2f, 1f),
         new Color(1.2f, 1f, 0.8f)
     };
     for (int i = 0; i < 10; i++)
     {
         PawnNameColorUtility.ColorsNeutral.Add(PawnNameColorUtility.RandomShiftOf(PawnNameColorUtility.ColorBaseNeutral, i));
         PawnNameColorUtility.ColorsHostile.Add(PawnNameColorUtility.RandomShiftOf(PawnNameColorUtility.ColorBaseHostile, i));
         PawnNameColorUtility.ColorsPrisoner.Add(PawnNameColorUtility.RandomShiftOf(PawnNameColorUtility.ColorBasePrisoner, i));
     }
 }
 static PawnNameColorUtility()
 {
     for (int i = 0; i < 10; i++)
     {
         PawnNameColorUtility.ColorsNeutral.Add(PawnNameColorUtility.RandomShiftOf(PawnNameColorUtility.ColorBaseNeutral, i));
         PawnNameColorUtility.ColorsHostile.Add(PawnNameColorUtility.RandomShiftOf(PawnNameColorUtility.ColorBaseHostile, i));
         PawnNameColorUtility.ColorsPrisoner.Add(PawnNameColorUtility.RandomShiftOf(PawnNameColorUtility.ColorBasePrisoner, i));
     }
 }
Example #3
0
        public static void DrawPawnLabel(Pawn pawn, Rect bgRect, float alpha = 1f, float truncateToWidth = 9999f, Dictionary <string, string> truncatedLabelsCache = null, GameFont font = GameFont.Tiny, bool alwaysDrawBg = true, bool alignCenter = true)
        {
            GUI.color = new Color(1f, 1f, 1f, alpha);
            Text.Font = font;
            string pawnLabel            = GetPawnLabel(pawn, truncateToWidth, truncatedLabelsCache, font);
            float  pawnLabelNameWidth   = GetPawnLabelNameWidth(pawn, truncateToWidth, truncatedLabelsCache, font);
            float  summaryHealthPercent = pawn.health.summaryHealth.SummaryHealthPercent;

            if (alwaysDrawBg || summaryHealthPercent < 0.999f)
            {
                GUI.DrawTexture(bgRect, TexUI.GrayTextBG);
            }
            if (summaryHealthPercent < 0.999f)
            {
                Rect rect = bgRect.ContractedBy(1f);
                Widgets.FillableBar(rect, summaryHealthPercent, OverlayHealthTex, BaseContent.ClearTex, doBorder: false);
            }
            Color color = PawnNameColorUtility.PawnNameColorOf(pawn);

            color.a   = alpha;
            GUI.color = color;
            Rect rect2 = default(Rect);

            if (alignCenter)
            {
                Text.Anchor = TextAnchor.UpperCenter;
                Vector2 center = bgRect.center;
                rect2 = new Rect(center.x - pawnLabelNameWidth / 2f, bgRect.y - 2f, pawnLabelNameWidth, 100f);
            }
            else
            {
                Text.Anchor = TextAnchor.UpperLeft;
                float   x       = bgRect.x + 2f;
                Vector2 center2 = bgRect.center;
                float   y       = center2.y;
                Vector2 vector  = Text.CalcSize(pawnLabel);
                rect2 = new Rect(x, y - vector.y / 2f, pawnLabelNameWidth, 100f);
            }
            Widgets.Label(rect2, pawnLabel);
            if (pawn.Drafted)
            {
                Vector2 center3 = bgRect.center;
                Widgets.DrawLineHorizontal(center3.x - pawnLabelNameWidth / 2f, bgRect.y + 11f, pawnLabelNameWidth);
            }
            GUI.color   = Color.white;
            Text.Anchor = TextAnchor.UpperLeft;
        }