public override void Refresh() { foreach (var projectRecord in new List <CityProjectRecord>(InstantiatedProjectRecords)) { Destroy(projectRecord.gameObject); } InstantiatedProjectRecords.Clear(); if (ObjectToDisplay == null) { return; } var cityOwner = CityPossessionCanon.GetOwnerOfPossession(ObjectToDisplay); if (DisplayType == CityDisplayType.PlayMode) { AddUnitProjects(cityOwner); AddBuildingProjects( cityOwner, TechCanon.GetResearchedBuildings(cityOwner), template => ObjectToDisplay.ActiveProject = ProjectFactory.ConstructProject(template) ); } else if (DisplayType == CityDisplayType.MapEditor) { AddBuildingProjects( cityOwner, AllBuildingTemplates, template => BuildingFactory.BuildBuilding(template, ObjectToDisplay) ); } }
private void DecomposeActiveProject(SerializableCityData cityData, ICity newCity) { if (cityData.ActiveProject != null) { if (cityData.ActiveProject.BuildingToConstruct != null) { var buildingTemplate = AvailableBuildingTemplates.Where( template => template.name.Equals(cityData.ActiveProject.BuildingToConstruct) ).First(); newCity.ActiveProject = ProjectFactory.ConstructProject(buildingTemplate); } else { var unitTemplate = AvailableUnitTemplates.Where( template => template.name.Equals(cityData.ActiveProject.UnitToConstruct) ).First(); newCity.ActiveProject = ProjectFactory.ConstructProject(unitTemplate); } newCity.ActiveProject.Progress = cityData.ActiveProject.Progress; } }