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); } } }
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); } }