static void Postfix(StaffMenu __instance, StaffDefinition.Type staffType, StaffMenu.StaffMenuSettings ____staffMenuSettings, WorldState ____worldState, List <JobDescription>[] ____jobs, CharacterManager ____characterManager) { if (!Main.enabled) { return; } try { int num = 0; foreach (object obj in ____staffMenuSettings.JobsListContainer) { Transform transform = (Transform)obj; JobDescription job = ____jobs[(int)staffType][num]; TMP_Text component = UnityEngine.Object.Instantiate <GameObject>(____staffMenuSettings.TitleText.gameObject).GetComponent <TMP_Text>(); component.rectTransform.SetParent(transform); int staffCount = ____characterManager.StaffMembers.Count((Staff s) => !s.HasResigned() && !s.HasBeenFired() && job.IsSuitable(s) && !s.JobExclusions.Contains(job)); int roomCount = 0; if (job is JobRoomDescription) { roomCount = ____worldState.AllRooms.Count((Room x) => x.Definition == ((JobRoomDescription)job).Room); component.text = staffCount.ToString() + "/" + roomCount.ToString(); StaffJobIcon[] componentsInChildren = ____staffMenuSettings.JobsListContainer.gameObject.GetComponentsInChildren <StaffJobIcon>(); if (componentsInChildren != null && num < componentsInChildren.Length) { componentsInChildren[num].Tooltip.SetDataProvider(delegate(Tooltip tooltip) { tooltip.Text = string.Concat(new string[] { job.GetJobAssignmentTooltipString(), "\n\nSatff Assigned: ", staffCount.ToString(), "\nRooms Built: ", roomCount.ToString() }); }); } } else if (job is JobItemDescription) { component.text = staffCount.ToString(); StaffJobIcon[] componentsInChildren2 = ____staffMenuSettings.JobsListContainer.gameObject.GetComponentsInChildren <StaffJobIcon>(); if (componentsInChildren2 != null && num < componentsInChildren2.Length) { componentsInChildren2[num].Tooltip.SetDataProvider(delegate(Tooltip tooltip) { tooltip.Text = job.GetJobAssignmentTooltipString() + "\n\nSatff Assigned: " + staffCount.ToString(); }); } } else if (job is JobMaintenanceDescription) { string text = staffCount.ToString(); int itemCount = (from mj in ____worldState.GetRoomItemsWithMaintenanceDescription(((JobMaintenanceDescription)job).Description) where mj.Definition.Interactions.Count((InteractionDefinition inter) => inter.Type == InteractionAttributeModifier.Type.Maintain) > 0 select mj).Count <RoomItem>(); text = text + "/" + itemCount.ToString(); component.text = text; StaffJobIcon[] componentsInChildren3 = ____staffMenuSettings.JobsListContainer.gameObject.GetComponentsInChildren <StaffJobIcon>(); if (componentsInChildren3 != null && num < componentsInChildren3.Length) { componentsInChildren3[num].Tooltip.SetDataProvider(delegate(Tooltip tooltip) { tooltip.Text = string.Concat(new string[] { job.GetJobAssignmentTooltipString(), "\n\nSatff Assigned: ", staffCount.ToString(), "\nMaintenance Items: ", itemCount.ToString() }); }); } } else if (job is JobUpgradeDescription) { int upgradeCount = 0; string machinesForUpgarde = ""; foreach (Room room in ____worldState.AllRooms) { foreach (RoomItem roomItem in room.FloorPlan.Items) { RoomItemUpgradeDefinition nextUpgrade = roomItem.Definition.GetNextUpgrade(roomItem.UpgradeLevel); if (nextUpgrade != null && roomItem.Level.Metagame.HasUnlocked(nextUpgrade) && roomItem.GetComponent <RoomItemUpgradeComponent>() == null) { upgradeCount++; machinesForUpgarde = machinesForUpgarde + "\n" + roomItem.Name; } } } if (!string.IsNullOrEmpty(machinesForUpgarde)) { StaffJobIcon[] componentsInChildren4 = ____staffMenuSettings.JobsListContainer.gameObject.GetComponentsInChildren <StaffJobIcon>(); if (componentsInChildren4 != null && num < componentsInChildren4.Length) { componentsInChildren4[num].Tooltip.SetDataProvider(delegate(Tooltip tooltip) { tooltip.Text = string.Concat(new string[] { job.GetJobAssignmentTooltipString(), "\n\nSatff Assigned: ", staffCount.ToString(), "\n", machinesForUpgarde }); }); } } component.text = staffCount.ToString() + "/" + upgradeCount; } else { if (!(job is JobGhostDescription) && !(job is JobFireDescription)) { continue; } component.text = staffCount.ToString(); } component.enableAutoSizing = false; component.fontSize = 18f; component.enableWordWrapping = false; component.overflowMode = 0; component.alignment = TextAlignmentOptions.Midline; component.color = Color.white; component.outlineColor = Color.black; component.outlineWidth = 1f; component.rectTransform.anchorMin = new Vector2(0.5f, 0f); component.rectTransform.anchorMax = new Vector2(0.5f, 1f); component.rectTransform.anchoredPosition = new Vector2(0f, -15f); component.rectTransform.sizeDelta = transform.GetComponent <RectTransform>().sizeDelta; num++; } } catch (Exception ex) { Main.Logger.Error(ex.ToString() + ": " + ex.StackTrace.ToString()); } }