Exemple #1
0
 internal static IEnumerable <Bundle> GetBestPlaceUtilitiesturnBundles(GameLayer gameLayer)
 {
     foreach (var building in gameLayer.GetState().AvailableUtilityBuildings)
     {
         if (building.ReleaseTick > gameLayer.GetState().Turn)
         {
             continue;
         }
         var b = PlaceBuildingTurnFactory.GetBestUtilityBundle(building, gameLayer);
         if (b != null)
         {
             b.Utility = building;
             yield return(b);
         }
     }
 }
Exemple #2
0
        public static IEnumerable <Bundle> GetBestPlaceBuildingTurnBundles(GameLayer gameLayer)
        {
            foreach (var building in gameLayer.GetState().AvailableResidenceBuildings)
            {
                if (building.ReleaseTick > gameLayer.GetState().Turn)
                {
                    continue;
                }
                var b = PlaceBuildingTurnFactory.GetBestResidenceBundle(building, gameLayer);
                if (b == null)
                {
                    if (gameLayer.GetState().HousingQueue > Constants.LONG_QUEUE)
                    {
                        BuiltResidenceBuilding bui = null;
                        double best = 200;
                        foreach (var build in gameLayer.GetState().ResidenceBuildings)
                        {
                            if (!build.CanBeDemolished || build.CurrentPop != gameLayer.GetResidenceBlueprint(build.BuildingName).MaxPop || gameLayer.GetState().ResidenceBuildings.Where(t => t.BuildingName == build.BuildingName).Count() == 1)
                            {
                                continue;
                            }
                            if (best > gameLayer.GetResidenceBlueprint(build.BuildingName).MaxHappiness *gameLayer.GetResidenceBlueprint(build.BuildingName).MaxPop)
                            {
                                best = gameLayer.GetResidenceBlueprint(build.BuildingName).MaxHappiness *gameLayer.GetResidenceBlueprint(build.BuildingName).MaxPop;
                                bui  = build;
                            }
                        }
                        if (bui != null && best < 30 && gameLayer.GetState().Funds > 15000 && gameLayer.GetState().Turn < 550)
                        {
                            Console.WriteLine("Demolish");

                            Program.StackedTurns.Push(new DemolishTurn(bui.Position.x, bui.Position.y, gameLayer.GetState().GameId));
                        }
                    }
                    break;
                }
                b.Residence = building;
                yield return(b);
            }
        }