public IPopulationCenters Upgrade(ICivilization civilization, IPopulationCenters center) { IPopulationCenters upgrade = null; if (!civilization.RegionsOwned.Last().CanSupportAdditionalPopulationCenters()) return upgrade; // as long as the last region has available centers we can keep going if (!center.GetType().Name.ToLower().Equals("metropolis")) { upgrade = PopulationCenterFactory.Get(center.GetType().Name); } else // we have a metropolis. Generate a new Hamlet now. { return GenerateSingle(civilization); } return CreateCenter(civilization, upgrade); }
private IPopulationCenters CreateCenter(ICivilization civilization, IPopulationCenters center) { center.Id = Random.Next(0, 423645245); center.Name = Names.SingleName(CoreEnums.Word.HumanPlace); // TODO: named according to race center.Description = "DESCRIPTION"; center.Civilization = civilization; center.Region = civilization.RegionsOwned.First(r => r.CanSupportAdditionalPopulationCenters()); center.Population = new List<IPerson>(); center.HasPort = false; // TODO: hard coded center.HasMarket = true; // TODO: hard coded return center; }