public void PerformGoldenAgeTasks() { if (GoldenAgeCanon.IsCivInGoldenAge(this)) { GoldenAgeCanon.ChangeTurnsOfGoldenAgeForCiv(this, -1); if (GoldenAgeCanon.GetTurnsLeftOnGoldenAgeForCiv(this) <= 0) { GoldenAgeCanon.StopGoldenAgeForCiv(this); } } else { int happiness = CivHappinessLogic.GetNetHappinessOfCiv(this); GoldenAgeCanon.ChangeGoldenAgeProgressForCiv(this, happiness); float progressTowards = GoldenAgeCanon.GetGoldenAgeProgressForCiv(this); float progressNeeded = GoldenAgeCanon.GetNextGoldenAgeCostForCiv(this); if (progressTowards >= progressNeeded) { GoldenAgeCanon.SetGoldenAgeProgressForCiv(this, 0f); GoldenAgeCanon.StartGoldenAgeForCiv(this, GoldenAgeCanon.GetGoldenAgeLengthForCiv(this)); } } }
public override void Refresh() { if (ObjectToDisplay == null) { return; } if (GoldenAgeCanon.IsCivInGoldenAge(ObjectToDisplay)) { TextField.SetText(string.Format( OneArgGoldenAgeFormat, GoldenAgeCanon.GetTurnsLeftOnGoldenAgeForCiv(ObjectToDisplay) )); } else { TextField.SetText(string.Format( TwoArgNonGoldenAgeFormat, GoldenAgeCanon.GetGoldenAgeProgressForCiv(ObjectToDisplay), GoldenAgeCanon.GetNextGoldenAgeCostForCiv(ObjectToDisplay) )); } }
public void ComposeCivilizations(SerializableMapData mapData) { mapData.Civilizations = new List <SerializableCivilizationData>(); foreach (var civilization in CivilizationFactory.AllCivilizations) { var civData = new SerializableCivilizationData() { TemplateName = civilization.Template.Name, GoldStockpile = civilization.GoldStockpile, CultureStockpile = civilization.CultureStockpile, DiscoveredTechs = TechCanon.GetTechsDiscoveredByCiv(civilization).Select(tech => tech.Name).ToList(), SocialPolicies = PolicyComposer.ComposePoliciesFromCiv(civilization), }; if (civilization.TechQueue != null && civilization.TechQueue.Count > 0) { civData.TechQueue = civilization.TechQueue.Select(tech => tech.Name).ToList(); } else { civData.TechQueue = null; } var availableTechs = TechCanon.GetTechsAvailableToCiv(civilization); if (availableTechs.Count() > 0) { foreach (var availableTech in availableTechs) { int progress = TechCanon.GetProgressOnTechByCiv(availableTech, civilization); if (progress != 0) { if (civData.ProgressOnTechs == null) { civData.ProgressOnTechs = new Dictionary <string, int>(); } civData.ProgressOnTechs[availableTech.Name] = progress; } } } else { civData.ProgressOnTechs = null; } var exploredCells = Grid.Cells.Where(cell => ExplorationCanon.IsCellExploredByCiv(cell, civilization)); civData.ExploredCells = exploredCells.Select(cell => cell.Coordinates).ToList(); civData.FreeBuildings = FreeBuildingsCanon .GetFreeBuildingsForCiv(civilization) .Select(buildingList => buildingList.Select(buildingTemplate => buildingTemplate.name).ToList()) .ToList(); civData.GoldenAgeTurnsLeft = GoldenAgeCanon.GetTurnsLeftOnGoldenAgeForCiv(civilization); civData.GoldenAgeProgress = GoldenAgeCanon.GetGoldenAgeProgressForCiv(civilization); civData.PreviousGoldenAges = GoldenAgeCanon.GetPreviousGoldenAgesForCiv(civilization); mapData.Civilizations.Add(civData); } mapData.CivDiscoveryPairs = CivDiscoveryCanon.GetDiscoveryPairs().Select( pair => new Tuple <string, string>(pair.Item1.Template.Name, pair.Item2.Template.Name) ).ToList(); }