public YieldSummary GetYieldEstimateForCell( IHexCell cell, IEnumerable <ITechDefinition> availableTechs ) { var improvementModifications = new HashSet <IImprovementModificationData>(availableTechs.SelectMany(tech => tech.ImprovementYieldModifications)); var visibleResources = new HashSet <IResourceDefinition> (TechCanon.GetDiscoveredResourcesFromTechs(availableTechs)); var availableImprovements = new HashSet <IImprovementTemplate> (TechCanon.GetAvailableImprovementsFromTechs(availableTechs)); var availableBuildings = new HashSet <IBuildingTemplate> (TechCanon.GetAvailableBuildingsFromTechs(availableTechs)); return(GetYieldEstimateForCell( cell, new CachedTechData() { ImprovementModifications = improvementModifications, VisibleResources = visibleResources, AvailableImprovements = availableImprovements, AvailableBuildings = availableBuildings } )); }