public void ColonistBarOnGUI() { if (!Visible) { return; } if (Event.current.type != EventType.Layout) { List <Entry> entries = Entries; int num = -1; bool showGroupFrames = ShowGroupFrames; int reorderableGroup = -1; GUI.color = Color.white; Text.Font = GameFont.Tiny; var createGroupRect = ColonistBarDrawLocsFinder.createGroupRect; if (Mouse.IsOver(createGroupRect)) { GUI.DrawTexture(createGroupRect, Textures.CreateGroupIconHover); TooltipHandler.TipRegion(createGroupRect, Strings.CreateGroupTooltip); } else if (!TacticalGroupsSettings.HideCreateGroup) { GUI.DrawTexture(createGroupRect, Textures.CreateGroupIcon); } HandleGroupingClicks(createGroupRect); Rect optionsGearRect = new Rect(createGroupRect.x + (createGroupRect.width / 3f), createGroupRect.y + createGroupRect.height + 5, Textures.OptionsGear.width, Textures.OptionsGear.height); if (Mouse.IsOver(optionsGearRect)) { GUI.DrawTexture(optionsGearRect, Textures.OptionsGearHover); if (Event.current.type == EventType.MouseDown && Event.current.button == 0) { TieredFloatMenu floatMenu = new OptionsMenu(null, null, optionsGearRect, Textures.OptionsMenu); Find.WindowStack.Add(floatMenu); } TooltipHandler.TipRegion(optionsGearRect, Strings.OptionsGearTooltip); } else if (!TacticalGroupsSettings.HideCreateGroup) { GUI.DrawTexture(optionsGearRect, Textures.OptionsGear); } for (var i = 0; i < ColonistBarDrawLocsFinder.pawnGroupDrawLoc.Count; i++) { ColonistBarDrawLocsFinder.pawnGroupDrawLoc[i].colonistGroup.Draw(ColonistBarDrawLocsFinder.pawnGroupDrawLoc[i].rect); } for (var i = 0; i < ColonistBarDrawLocsFinder.colonyGroupDrawLoc.Count; i++) { ColonistBarDrawLocsFinder.colonyGroupDrawLoc[i].colonistGroup.Draw(ColonistBarDrawLocsFinder.colonyGroupDrawLoc[i].rect); } for (var i = 0; i < ColonistBarDrawLocsFinder.caravanGroupDrawLoc.Count; i++) { ColonistBarDrawLocsFinder.caravanGroupDrawLoc[i].colonistGroup.Draw(ColonistBarDrawLocsFinder.caravanGroupDrawLoc[i].rect); } for (var i = 0; i < ColonistBarDrawLocsFinder.pawnGroupDrawLoc.Count; i++) { ColonistBarDrawLocsFinder.pawnGroupDrawLoc[i].colonistGroup.DrawOverlays(ColonistBarDrawLocsFinder.pawnGroupDrawLoc[i].rect); } for (var i = 0; i < ColonistBarDrawLocsFinder.colonyGroupDrawLoc.Count; i++) { ColonistBarDrawLocsFinder.colonyGroupDrawLoc[i].colonistGroup.DrawOverlays(ColonistBarDrawLocsFinder.colonyGroupDrawLoc[i].rect); } for (var i = 0; i < ColonistBarDrawLocsFinder.caravanGroupDrawLoc.Count; i++) { ColonistBarDrawLocsFinder.caravanGroupDrawLoc[i].colonistGroup.DrawOverlays(ColonistBarDrawLocsFinder.caravanGroupDrawLoc[i].rect); } for (int i = 0; i < cachedDrawLocs.Count; i++) { Entry entry = entries[i]; bool flag = num != entry.group; num = entry.group; if (flag) { reorderableGroup = ReorderableWidget.NewGroup(entry.reorderAction, ReorderableDirection.Horizontal, SpaceBetweenColonistsHorizontal, entry.extraDraggedItemOnGUI); } bool reordering; if (entry.pawn != null) { drawer.HandleClicks(cachedDrawLocs[i], entry.pawn, reorderableGroup, out reordering); } else { reordering = false; } if (Event.current.type != EventType.Repaint) { continue; } if (flag && showGroupFrames) { drawer.DrawGroupFrame(entry.group); } if (entry.pawn != null) { drawer.DrawColonist(cachedDrawLocs[i], entry.pawn, entry.map, colonistsToHighlight.Contains(entry.pawn), reordering); Faction faction = entry.pawn.GetExtraMiniFaction(); if (faction == null) { faction = entry.pawn.GetExtraHomeFaction(); } if (faction != null) { GUI.color = faction.Color; float num2 = cachedDrawLocs[i].width * 0.5f; GUI.DrawTexture(new Rect(cachedDrawLocs[i].xMax - num2 - 2f, cachedDrawLocs[i].yMax - num2 - 2f, num2, num2), faction.def.FactionIcon); GUI.color = Color.white; } } } num = -1; if (showGroupFrames) { for (int j = 0; j < cachedDrawLocs.Count; j++) { Entry entry2 = entries[j]; bool num3 = num != entry2.group; num = entry2.group; if (num3) { drawer.HandleGroupFrameClicks(entry2.group); } } } } if (Event.current.type == EventType.Repaint) { colonistsToHighlight.Clear(); } if (Find.TickManager.TicksGame % 1000 == 0) { foreach (var group in TacticUtils.AllGroups) { group.Sort(); } } }