public static void RecalcIconPositionsPSI() { SettingsPSI psiSettings = Settings.PSISettings; // _iconPosVectors = new Vector3[18]; IconPosVectorsPSI = new Vector3[40]; for (int index = 0; index < IconPosVectorsPSI.Length; ++index) { int num1 = index / psiSettings.IconsInColumn; int num2 = index % psiSettings.IconsInColumn; if (psiSettings.IconsHorizontal) { int num3 = num1; num1 = num2; num2 = num3; } float y = Altitudes.AltitudeFor(AltitudeLayer.MetaOverlays); IconPosVectorsPSI[index] = new Vector3( (float)(-0.600000023841858 * psiSettings.IconMarginX - 0.550000011920929 * psiSettings.IconSize * psiSettings.IconOffsetX * num1), y, (float)(-0.600000023841858 * psiSettings.IconMarginY + 0.550000011920929 * psiSettings.IconSize * psiSettings.IconOffsetY * num2)); } }
private static void DrawColonistIconsPSI([NotNull] Pawn pawn) { if (pawn.Dead || !pawn.Spawned || pawn.holdingOwner == null || pawn.Map == null) { return; } CompPSI pawnStats = pawn.GetComp <CompPSI>(); if (pawnStats == null) { return; } SettingsPSI psiSettings = Settings.PSISettings; float viewOpacity = psiSettings.IconOpacity; int iconNum = 0; Vector3 bodyLoc = pawn.DrawPos; // Target Point if (psiSettings.ShowTargetPoint && pawnStats.TargetPos != Vector3.zero) { if (psiSettings.UseColoredTarget) { Color skinColor = pawn.story.SkinColor; Color hairColor = pawn.story.hairColor; if (SkinMat == null) { return; } if (HairMat == null) { return; } PSIDrawer.DrawIcon_posOffset(pawnStats.TargetPos, Vector3.zero, SkinMat, skinColor, 1f); PSIDrawer.DrawIcon_posOffset(pawnStats.TargetPos, Vector3.zero, HairMat, hairColor, 1f); } else { if (TargetMat == null) { return; } PSIDrawer.DrawIcon_posOffset(pawnStats.TargetPos, Vector3.zero, TargetMat, ColorNeutralStatus, viewOpacity); } } // Drafted if (psiSettings.ShowDraft && pawn.Drafted) { if (pawnStats.IsPacifist) { PSIDrawer.DrawIconOnColonist(bodyLoc, ref iconNum, Icon.Pacific, ColYellow, Settings.ViewOpacityCrit); } else { PSIDrawer.DrawIconOnColonist(bodyLoc, ref iconNum, Icon.Draft, ColVermillion, Settings.ViewOpacityCrit); } } List <IconEntryPSI> drawIconEntries = pawnStats.PSIIconList; if (!drawIconEntries.NullOrEmpty()) { for (int index = 0; index < drawIconEntries.Count; index++) { IconEntryPSI iconEntryBar = drawIconEntries[index]; PSIDrawer.DrawIconOnColonist(bodyLoc, iconEntryBar, index + iconNum); } } }