static void Postfix(Thing __instance)
        {
            if (!OutfittedMod.showApparelScores)
            {
                return;
            }

            if (Find.CameraDriver.CurrentZoom != CameraZoomRange.Closest)
            {
                return;
            }

            var pawn = Find.Selector.SingleSelectedThing as Pawn;

            if (pawn == null || !pawn.IsColonistPlayerControlled)
            {
                return;
            }

            var apparel = __instance as Apparel;

            if (apparel == null)
            {
                return;
            }

            var outfit = pawn.outfits.CurrentOutfit as ExtendedOutfit;

            if (outfit == null)
            {
                return;
            }

            if (!outfit.filter.Allows(apparel))
            {
                return;
            }

            var scores = CachedScoresForPawn(pawn);

            float score = JobGiver_OptimizeApparel.ApparelScoreGain_NewTmp(pawn, apparel, scores);

            if (Math.Abs(score) > 0.01f)
            {
                var pos = GenMapUI.LabelDrawPosFor(apparel, 0f);
                GenMapUI.DrawThingLabel(pos, score.ToString("F1"), BeautyDrawer.BeautyColor(score, 3f));
            }
        }
 public void MapInterfaceOnGUI_BeforeMainTabs()
 {
     if (Find.CurrentMap == null)
     {
         return;
     }
     if (!WorldRendererUtility.WorldRenderedNow)
     {
         ScreenshotModeHandler screenshotMode = Find.UIRoot.screenshotMode;
         thingOverlays.ThingOverlaysOnGUI();
         MapComponentUtility.MapComponentOnGUI(Find.CurrentMap);
         BeautyDrawer.BeautyDrawerOnGUI();
         if (!screenshotMode.FiltersCurrentEvent)
         {
             colonistBar.ColonistBarOnGUI();
         }
         selector.dragBox.DragBoxOnGUI();
         designatorManager.DesignationManagerOnGUI();
         targeter.TargeterOnGUI();
         Find.CurrentMap.tooltipGiverList.DispenseAllThingTooltips();
         if (DebugViewSettings.drawFoodSearchFromMouse)
         {
             FoodUtility.DebugFoodSearchFromMouse_OnGUI();
         }
         if (DebugViewSettings.drawAttackTargetScores)
         {
             AttackTargetFinder.DebugDrawAttackTargetScores_OnGUI();
         }
         if (!screenshotMode.FiltersCurrentEvent)
         {
             mouseoverReadout.MouseoverReadoutOnGUI();
             globalControls.GlobalControlsOnGUI();
             resourceReadout.ResourceReadoutOnGUI();
         }
     }
     else
     {
         targeter.StopTargeting();
     }
 }
        private static void Postfix(Thing __instance)
        {
            if (!OutfitManagerMod.ShowApparelScores)
            {
                return;
            }
            if (Find.CameraDriver.CurrentZoom != CameraZoomRange.Closest)
            {
                return;
            }
            if (!(Find.Selector.SingleSelectedThing is Pawn pawn) || !pawn.IsColonistPlayerControlled)
            {
                return;
            }
            if (!(__instance is Apparel apparel))
            {
                return;
            }
            if (!(pawn.outfits.CurrentOutfit is ExtendedOutfit outfit))
            {
                return;
            }
            if (!outfit.filter.Allows(apparel))
            {
                return;
            }
            var wornApparelScores = pawn.apparel.WornApparel
                                    .Select(wornApparel => OutfitManagerMod.ApparelScoreRaw(pawn, wornApparel)).ToList();
            var score = JobGiver_OptimizeApparel.ApparelScoreGain_NewTmp(pawn, apparel, wornApparelScores);

            if (!(Math.Abs(score) > 0.01f))
            {
                return;
            }
            var pos = GenMapUI.LabelDrawPosFor(apparel, 0f);

            GenMapUI.DrawThingLabel(pos, score.ToString("F1", CultureInfo.InvariantCulture),
                                    BeautyDrawer.BeautyColor(score, 3f));
        }
 public void MapInterfaceOnGUI_BeforeMainTabs()
 {
     if (Find.CurrentMap != null)
     {
         if (!WorldRendererUtility.WorldRenderedNow)
         {
             ScreenshotModeHandler screenshotMode = Find.UIRoot.screenshotMode;
             Profiler.BeginSample("ThingOverlaysOnGUI()");
             this.thingOverlays.ThingOverlaysOnGUI();
             Profiler.EndSample();
             Profiler.BeginSample("MapComponentOnGUI()");
             MapComponentUtility.MapComponentOnGUI(Find.CurrentMap);
             Profiler.EndSample();
             Profiler.BeginSample("BeautyDrawerOnGUI()");
             BeautyDrawer.BeautyDrawerOnGUI();
             Profiler.EndSample();
             if (!screenshotMode.FiltersCurrentEvent)
             {
                 Profiler.BeginSample("ColonistBarOnGUI()");
                 this.colonistBar.ColonistBarOnGUI();
                 Profiler.EndSample();
             }
             Profiler.BeginSample("DragBoxOnGUI()");
             this.selector.dragBox.DragBoxOnGUI();
             Profiler.EndSample();
             Profiler.BeginSample("DesignationManagerOnGUI()");
             this.designatorManager.DesignationManagerOnGUI();
             Profiler.EndSample();
             Profiler.BeginSample("TargeterOnGUI()");
             this.targeter.TargeterOnGUI();
             Profiler.EndSample();
             Profiler.BeginSample("DispenseAllThingTooltips()");
             Find.CurrentMap.tooltipGiverList.DispenseAllThingTooltips();
             Profiler.EndSample();
             if (DebugViewSettings.drawFoodSearchFromMouse)
             {
                 Profiler.BeginSample("FoodUtility.DebugFoodSearchFromMouse_OnGUI()");
                 FoodUtility.DebugFoodSearchFromMouse_OnGUI();
                 Profiler.EndSample();
             }
             if (DebugViewSettings.drawAttackTargetScores)
             {
                 Profiler.BeginSample("AttackTargetFinder.DebugDrawAttackTargetScores_OnGUI()");
                 AttackTargetFinder.DebugDrawAttackTargetScores_OnGUI();
                 Profiler.EndSample();
             }
             if (!screenshotMode.FiltersCurrentEvent)
             {
                 Profiler.BeginSample("GlobalControlsOnGUI()");
                 this.globalControls.GlobalControlsOnGUI();
                 Profiler.EndSample();
                 Profiler.BeginSample("ResourceReadoutOnGUI()");
                 this.resourceReadout.ResourceReadoutOnGUI();
                 Profiler.EndSample();
             }
         }
         else
         {
             this.targeter.StopTargeting();
         }
     }
 }