Example #1
0
        /// <summary>
        /// Event handler for the <i>ImprovementBuilt</i> event of a city using this strategy.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected override void OnImprovementBuilt(object sender, ImprovementBuiltEventArgs e)
        {
            AICity city = e.City as AICity;

            BuildableItem nextImprovement = null;
            GameRoot      root            = GameRoot.Instance;

            //what to do with what we just built?
            if (e.Improvement.GetType() == typeof(AIUnit))
            {
                AIUnit unit = e.Improvement as AIUnit;

                switch (city.PrimaryNeed)
                {
                case AICityNeed.Commerce:

                    break;

                case AICityNeed.Culture:

                    break;

                case AICityNeed.Food:

                    break;

                case AICityNeed.UnitDefense:
                    unit.Fortified = true;
                    break;
                }
            }
            else if (e.Improvement.GetType() == typeof(AISettler))
            {
            }
            else if (e.Improvement.GetType() == typeof(AIWorker))
            {
                AIWorker worker = e.Improvement as AIWorker;
                worker.ParentCity = e.City;
                worker.Automated  = true;
            }


            //next item to build
            switch (city.PrimaryNeed)
            {
            case AICityNeed.Commerce:
                if (!city.HasWorkerInFields())
                {
                    nextImprovement = UnitFactory.CreateWorker(city);
                }
                else
                {
                    nextImprovement =
                        city.GetBuildableItemForNeed(city.PrimaryNeed,
                                                     typeof(Improvement));
                }
                break;

            case AICityNeed.Culture:
                nextImprovement =
                    city.GetBuildableItemForNeed(city.PrimaryNeed, typeof(Improvement));
                break;

            case AICityNeed.Food:
                if (!city.HasWorkerInFields())
                {
                    nextImprovement = UnitFactory.CreateWorker(city);
                }
                else
                {
                    nextImprovement =
                        city.GetBuildableItemForNeed(city.PrimaryNeed,
                                                     typeof(Improvement));
                }
                break;

            case AICityNeed.UnitDefense:
                nextImprovement =
                    city.GetBuildableItemForNeed(city.PrimaryNeed,
                                                 typeof(Unit));
                break;
            }

            city.NextImprovement = nextImprovement;
        }
Example #2
0
        /// <summary>
        /// Gets a new settler from the village for the exploring units' country.
        /// </summary>
        /// <param name="explorer"></param>
        /// <returns></returns>
        private static Settler GetSettler(Unit explorer)
        {
            Settler settler = UnitFactory.CreateSettler(explorer.Coordinates, explorer.ParentCountry);

            return(settler);
        }