private float DrawResearchBenchRequirements(ResearchProjectDef project, Rect rect) { float xMin = rect.xMin; float yMin = rect.yMin; if (project.requiredResearchBuilding != null) { bool present = false; List <Map> maps = Find.Maps; for (int i = 0; i < maps.Count; i++) { if (maps[i].listerBuildings.allBuildingsColonist.Find((Building x) => x.def == project.requiredResearchBuilding) != null) { present = true; break; } } Widgets.LabelCacheHeight(ref rect, "RequiredResearchBench".Translate() + ":"); rect.xMin += 6f; rect.yMin += rect.height; SetPrerequisiteStatusColor(present, project); rect.height = Text.CalcHeight(project.requiredResearchBuilding.LabelCap, rect.width - 24f - 6f); Widgets.HyperlinkWithIcon(rect, new Dialog_InfoCard.Hyperlink(project.requiredResearchBuilding)); rect.yMin += rect.height + 4f; GUI.color = Color.white; rect.xMin = xMin; } if (!project.requiredResearchFacilities.NullOrEmpty()) { Widgets.LabelCacheHeight(ref rect, "RequiredResearchBenchFacilities".Translate() + ":"); rect.yMin += rect.height; Building_ResearchBench building_ResearchBench = FindBenchFulfillingMostRequirements(project.requiredResearchBuilding, project.requiredResearchFacilities); CompAffectedByFacilities bestMatchingBench = null; if (building_ResearchBench != null) { bestMatchingBench = building_ResearchBench.TryGetComp <CompAffectedByFacilities>(); } rect.xMin += 6f; for (int j = 0; j < project.requiredResearchFacilities.Count; j++) { DrawResearchBenchFacilityRequirement(project.requiredResearchFacilities[j], bestMatchingBench, project, ref rect); rect.yMin += rect.height; } rect.yMin += 4f; } GUI.color = Color.white; rect.xMin = xMin; return(rect.yMin - yMin); }
private float DrawResearchBenchRequirements(ResearchProjectDef project, Rect rect) { float yMin = rect.yMin; if (project.requiredResearchBuilding != null) { bool present = false; List <Map> maps = Find.Maps; int num = 0; while (num < maps.Count) { if (maps[num].listerBuildings.allBuildingsColonist.Find((Building x) => x.def == project.requiredResearchBuilding) == null) { num++; continue; } present = true; break; } Widgets.LabelCacheHeight(ref rect, "RequiredResearchBench".Translate() + ":", true, false); rect.yMin += rect.height; this.SetPrerequisiteStatusColor(present, project); Widgets.LabelCacheHeight(ref rect, " " + project.requiredResearchBuilding.LabelCap, true, false); rect.yMin += rect.height; GUI.color = Color.white; } if (!project.requiredResearchFacilities.NullOrEmpty()) { Widgets.LabelCacheHeight(ref rect, "RequiredResearchBenchFacilities".Translate() + ":", true, false); rect.yMin += rect.height; Building_ResearchBench building_ResearchBench = this.FindBenchFulfillingMostRequirements(project.requiredResearchBuilding, project.requiredResearchFacilities); CompAffectedByFacilities bestMatchingBench = null; if (building_ResearchBench != null) { bestMatchingBench = building_ResearchBench.TryGetComp <CompAffectedByFacilities>(); } for (int i = 0; i < project.requiredResearchFacilities.Count; i++) { this.DrawResearchBenchFacilityRequirement(project.requiredResearchFacilities[i], bestMatchingBench, project, ref rect); rect.yMin += 15f; } } GUI.color = Color.white; return(rect.yMin - yMin); }