/// <summary> /// Classify the city based on its population. /// /// TODO: Put people counts into a table /// </summary> /// <param name="cityPopulation">Number of people in the city.</param> /// <returns></returns> private CityClassification GetCityClass(long cityPopulation) { CityClassification cityClassification = CityClassification.Village; if (cityPopulation > 2000) { cityClassification = CityClassification.Town; } if (cityPopulation > 10000) { cityClassification = CityClassification.City; } if (cityPopulation > 50000) { cityClassification = CityClassification.Capital; } if (cityPopulation > 100000) { cityClassification = CityClassification.Metropolis; } if (cityPopulation > 500000) { cityClassification = CityClassification.Megalopolis; } return(cityClassification); }
public object GetCities() { var list = new List <CityClassification>(); var hotcitise = new CityClassification() { Title = "热门城市", Type = CityClassificationType.Likely, Cities = context.HotCities.Select(city => city.City).ToList() }; list.Add(hotcitise); var groupCities = context.Citise.GroupBy(city => city.Spell.First()) .Select(cities => new CityClassification() { Title = char.ToUpper(cities.Key).ToString(), Type = CityClassificationType.Normal, Cities = cities.ToList() }).ToList(); list.AddRange(groupCities); return(new { items = list }); }
/// <summary> /// Detect a change in city class, and produce a message if the player has /// reached the next class. /// /// TODO: This code is very closely related to DoPopNum - merge both in some way? /// (This function gets called much more often however then doPopNum(). /// Also, at the first call, the difference between thisCityPop and /// cityPop is huge.) /// </summary> public void CheckGrowth() { if ((CityTime & 3) == 0) { short category = 0; long thisCityPop = GetPopulation(); if (CityPopulationLast > 0) { CityClassification lastClass = GetCityClass(CityPopulationLast); CityClassification newClass = GetCityClass(thisCityPop); if (lastClass != newClass) { // Switched class, find appropiate message. switch (newClass) { case CityClassification.Village: // Don't mention it. break; case CityClassification.Town: category = (short)GeneralMessages.MESSAGE_REACHED_TOWN; break; case CityClassification.City: category = (short)GeneralMessages.MESSAGE_REACHED_CITY; break; case CityClassification.Capital: category = (short)GeneralMessages.MESSAGE_REACHED_CAPITAL; break; case CityClassification.Metropolis: category = (short)GeneralMessages.MESSAGE_REACHED_METROPOLIS; break; case CityClassification.Megalopolis: category = (short)GeneralMessages.MESSAGE_REACHED_MEGALOPOLIS; break; default: //NOT_REACHED(); break; } } } if (category > 0 && category != CategoryLast) { SendMessage((GeneralMessages)category, Constants.NoWhere, Constants.NoWhere, true); CategoryLast = category; } CityPopulationLast = thisCityPop; } }