Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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;
            }
        }