private float DrawUnlockableHyperlinks(Rect rect, ResearchProjectDef project) { List <Pair <ResearchPrerequisitesUtility.UnlockedHeader, List <Def> > > list = UnlockedDefsGroupedByPrerequisites(project); if (list.NullOrEmpty()) { return(0f); } float yMin = rect.yMin; float x = rect.x; foreach (Pair <ResearchPrerequisitesUtility.UnlockedHeader, List <Def> > item in list) { ResearchPrerequisitesUtility.UnlockedHeader first = item.First; rect.x = x; if (!first.unlockedBy.Any()) { Widgets.LabelCacheHeight(ref rect, "Unlocks".Translate() + ":"); } else { Widgets.LabelCacheHeight(ref rect, string.Concat("UnlockedWith".Translate(), " ", HeaderLabel(first), ":")); } rect.x += 6f; rect.yMin += rect.height; foreach (Def item2 in item.Second) { Widgets.HyperlinkWithIcon(hyperlink: new Dialog_InfoCard.Hyperlink(item2), rect: new Rect(rect.x, rect.yMin, rect.width, 24f)); rect.yMin += 24f; } } return(rect.yMin - yMin); }
private string HeaderLabel(ResearchPrerequisitesUtility.UnlockedHeader headerProject) { StringBuilder stringBuilder = new StringBuilder(); string value = ""; for (int i = 0; i < headerProject.unlockedBy.Count; i++) { ResearchProjectDef researchProjectDef = headerProject.unlockedBy[i]; string text = researchProjectDef.LabelCap; if (!researchProjectDef.IsFinished) { text = text.Colorize(MissingPrerequisiteColor); } stringBuilder.Append(text).Append(value); value = ", "; } return(stringBuilder.ToString()); }