コード例 #1
0
        private List <Bot.FactoryResource> BuildItem(CommerceItem item, Bot.Location productionLocation)
        {
            CommerceItemBuild buildItem = buildItemList.Where(b => b.CommerceItem == item).FirstOrDefault();

            if (buildItem == null)
            {
                throw new ArgumentOutOfRangeException("CommerceItem item");
            }

            log.Info("Checking if I can Building item " + buildItem.Button.ToString() + " at " + buildItem.Building.ToString());

            var store = BuildingMatch.Create().Where(b => b.Building == buildItem.Building).FirstOrDefault();

            SelectBuilding(store);
            var required = resourceReader.GetRequiredResources(buildItem.Button, buildItem.Resources);

            log.Info("It requires : " + string.Join(",", required));
            if (required.Count > 0)
            {
                log.Info("I can't I need: " + string.Join(",", required));
                return(required);
            }
            log.Info("I can ...");

            log.Info("Building item " + buildItem.Button.ToString());
            touch.Swipe(buildItem.Button, buildItem.Button, productionLocation, 4, true);

            var requiredFinal = resourceReader.GetRequiredResources(buildItem.Button, buildItem.Resources);

            log.Info("Finished build item, I need to build: " + string.Join(",", requiredFinal));
            return(requiredFinal.ToList());
        }
コード例 #2
0
        public BuildingMatch SelectABuilding(string suffixMessage)
        {
            var           maxCnt   = 10;
            BuildingMatch building = null;

            for (int cnt = 0; cnt < maxCnt; cnt++)
            {
                // is building selected
                building = GetBuilding();
                if (building != null)
                {
                    this.log.Info("At [" + building.Building.ToString() + "]" + suffixMessage);
                    //this.log.Info("Exit");
                    break;
                }

                this.log.Info("No building selected, cnt = " + cnt);

                touch.ClickAt(Location.CentreMap, 100);
            }

            if (building == null)
            {
                this.log.Info("Max count reached.");
                this.log.Info("Failed!");
            }

            return(building);
        }
コード例 #3
0
        private void BuildFactoryItemIfNeeded(FactoryResource resource, IEnumerable <FactoryResource> factoryList)
        {
            var alwaysBuildItem = !new List <FactoryResource> {
                FactoryResource.Plastic, FactoryResource.Metal, FactoryResource.Wood, FactoryResource.Seeds
            }
            .Contains(resource);

            if (factoryList.Contains(resource))
            {
                log.Info("Picking up items");
                PickUpItems();
            }
            else
            {
                log.Info("Don't need to build " + resource.ToString());
            }

            if (alwaysBuildItem || factoryList.Contains(resource))
            {
                BuildingMatch buildingMatch = buildingSelector.SelectABuilding(", Trying to build " + resource.ToString());
                if (buildingMatch != null && buildingMatch.BuildingType == BuildingType.Factory)
                {
                    var button = GetResourceLocation(resource);
                    touch.Swipe(button, Bot.Location.FactoryQueuePositionStart, Bot.Location.FactoryQueuePositionend, 10, false);
                }
            }
        }
コード例 #4
0
        public bool CraftLevel8()
        {
            var startFactory = BuildingMatch.Create().Where(b => b.Building == Building.SmallFactory).FirstOrDefault();

            SelectBuilding(startFactory);
            for (var i = 0; i < 8; i++)
            {
                PickupItemsFromNextFactory();
            }
            SelectBuilding(startFactory);

            // Harware store
            var items1 = BuildItem(CommerceItem.Hammer, Bot.Location.ProductionQueueL8);

            // Farmers market
            var items2 = BuildItem(CommerceItem.Vegetable, Bot.Location.ProductionQueueL8);

            // Building Supplies Store
            BuildItem(CommerceItem.Nails, Bot.Location.ProductionQueueL8);
            BuildItem(CommerceItem.Nails, Bot.Location.ProductionQueueL8);
            var items3 = BuildItem(CommerceItem.Nails, Bot.Location.ProductionQueueL8);

            var requiredResources = items1.Concat(items2)
                                    .Concat(items3)
                                    .Distinct()
                                    .Where(r => r != FactoryResource.Ignore);

            log.Info("The factory needs to build: " + string.Join(",", requiredResources));

            if (requiredResources.Count() > 0)
            {
                SelectBuilding(startFactory);

                if (requiredResources.Contains(FactoryResource.Metal))
                {
                    BuildAtAllL8Factories(FactoryResource.Metal);
                }
                else if (requiredResources.Contains(FactoryResource.Wood))
                {
                    BuildAtAllL8Factories(FactoryResource.Wood);
                }
                else
                {
                    BuildFactoryItem(FactoryResource.Seeds);
                    touch.ClickAt(Bot.Location.RightButton);
                    BuildFactoryItem(FactoryResource.Seeds);
                    touch.ClickAt(Bot.Location.RightButton);
                    BuildFactoryItem(FactoryResource.Seeds);
                    touch.ClickAt(Bot.Location.RightButton);
                }
                return(true);
            }
            else
            {
                return(false);
            }
        }
コード例 #5
0
        private void SelectBuilding(BuildingMatch buildingMatch)
        {
            navigateToBuilding.NavigateTo(buildingMatch, 1);

            // pick up any items
            PickUpItems();

            // reselect
            navigateToBuilding.NavigateTo(buildingMatch, 1);
        }
コード例 #6
0
        public SaleResult Sell(out string itemSold)
        {
            itemSold = string.Empty;

            navigateToBuilding.NavigateTo(BuildingMatch.Get(Building.TradeDepot), 1);

            if (!this.tradeWindow.IsTradeDepotLogoVisible())
            {
                return(SaleResult.Other);
            }

            var result = this.SellAnItem(out itemSold);

            touch.ClickAt(Bot.Location.HomeButton);

            return(result);
        }
コード例 #7
0
 public static BuildingMatch Get(Building building)
 {
     return(BuildingMatch.Create().Where(b => b.Building == building).FirstOrDefault());
 }
コード例 #8
0
        public bool Craft()
        {
            var massProductionFactory = BuildingMatch.Create().Where(b => b.Building == Building.MassProductionFactory).FirstOrDefault();

            log.Debug(massProductionFactory.Building.ToString());



            ///SelectBuilding(massProductionFactory);
            return(true);

            /*
             * for (var i = 0; i < 8; i++)
             * {
             *  PickupItemsFromNextFactory();
             * }
             *
             * // Harware store
             * var items1 = BuildItem(CommerceItem.Hammer);
             *
             * //Furniture store
             * var items2 = BuildItem(CommerceItem.Table);
             * if (items2.Contains(FactoryResource.Ignore))
             * {
             *  items2 = BuildItem(CommerceItem.Chair);
             * }
             *
             * // Donut shop
             * //var items6 = BuildItem(CommerceItem.BreadRoll);
             * //items6 = BuildItem(CommerceItem.GreenSmoothie);
             * var items6 = BuildItem(CommerceItem.Donut);
             *
             * // Home appliances
             * var items8 = BuildItem(CommerceItem.BBQGrill);
             *
             * // Farmers market
             * var items4 = BuildItem(CommerceItem.FlourBag);
             *
             * // Gardening supplies
             * var items7 = BuildItem(CommerceItem.TreeSapling);
             * if (items7.Contains(FactoryResource.Ignore))
             * {
             *  items7 = BuildItem(CommerceItem.GardenFurniture);
             * }
             *
             * // Fashion store
             * var items5 = BuildItem(CommerceItem.Cap);
             * if (items5.Contains(FactoryResource.Ignore))
             * {
             *  items5 = BuildItem(CommerceItem.Shoe);
             * }
             * if (items5.Contains(FactoryResource.Ignore))
             * {
             *  items5 = BuildItem(CommerceItem.Watch);
             * }
             *
             * // Fast food restaurant
             * BuildItem(CommerceItem.IceCreamSandwich);
             *
             * // Building Supplies Store
             * BuildItem(CommerceItem.Nails);
             * BuildItem(CommerceItem.Nails);
             * var items3 = BuildItem(CommerceItem.Nails);
             *
             * var requiredResources = items1.Concat(items2)
             *  .Concat(items3).Concat(items4).Concat(items5).Concat(items6).Concat(items7).Concat(items8)
             *  .Distinct()
             *  .Where(r => r != FactoryResource.Ignore);
             *
             * log.Info("The factory needs to build: " + string.Join(",", requiredResources));
             *
             * if (requiredResources.Count() > 0)
             * {
             *  SelectBuilding(massProductionFactory);
             *
             *  if (requiredResources.Contains(FactoryResource.Metal))
             *  {
             *      BuildAtAllFactories(FactoryResource.Metal);
             *  }
             *  else if (requiredResources.Contains(FactoryResource.Wood))
             *  {
             *      BuildAtAllFactories(FactoryResource.Wood);
             *  }
             *  else
             *  {
             *      BuildFactoryItemIfNeeded(FactoryResource.Metal, requiredResources);
             *      touch.ClickAt(Bot.Location.RightButton);
             *      BuildFactoryItemIfNeeded(FactoryResource.Wood, requiredResources);
             *      touch.ClickAt(Bot.Location.RightButton);
             *
             *      var slowItem = FactoryResource.Textiles;
             *      BuildFactoryItem(slowItem);
             *      touch.ClickAt(Bot.Location.RightButton);
             *      BuildFactoryItem(slowItem);
             *      touch.ClickAt(Bot.Location.RightButton);
             *      BuildFactoryItem(slowItem);
             *      touch.ClickAt(Bot.Location.RightButton);
             *
             *      BuildFactoryItem(FactoryResource.SugarAndSpices);
             *      touch.ClickAt(Bot.Location.RightButton);
             *      BuildFactoryItemIfNeeded(FactoryResource.Seeds, requiredResources);
             *      touch.ClickAt(Bot.Location.RightButton);
             *      BuildFactoryItemIfNeeded(FactoryResource.Metal, requiredResources);
             *  }
             *
             *  return true;
             * }
             * else
             * {
             *  return false;
             * }
             */
        }
コード例 #9
0
        public bool NavigateTo(BuildingMatch desiredBuilding, int depth)
        {
            if (depth == 100)
            {
                log.Info("failed to find building: " + desiredBuilding.ToString());
                return(false);
            }

            //log.Info("looking for building: " + desiredBuilding.Building.ToString());

            GoHomeIfAtAnotherCity();

            if ((this.tradeWindow.IsTradeDepotLogoVisible() && desiredBuilding.Building == Building.TradeDepot) ||
                (this.tradeWindow.IsGlobalTradeVisible() && desiredBuilding.Building == Building.GlobalTrade)
                )
            {
                log.Info("at desired building: " + desiredBuilding.Building.ToString());
                return(true);
            }

            CloseOfflineHomeIfOpen();

            CloseTradeIfOpen();

            if (desiredBuilding.Building == Building.TradeDepot)
            {
                if (!NavigateTo(BuildingMatch.Get(Building.HardwareStore), 1))
                {
                    return(false);
                }

                touch.ClickAt(Bot.Location.HomeTradeDepot);

                return(NavigateTo(desiredBuilding, depth++));
            }

            if (desiredBuilding.Building == Building.GlobalTrade)
            {
                if (!NavigateTo(BuildingMatch.Get(Building.FastFoodRestaurant), 1))
                {
                    return(false);
                }

                touch.ClickAt(Bot.Location.GlobalTradeFromFastFood);

                return(NavigateTo(desiredBuilding, depth++));
            }

            var buildingFound = buildingSelector.SelectABuilding(" going to [" + desiredBuilding.Building.ToString() + "]");

            if (buildingFound == null)
            {
                log.Info("failed to find building: " + desiredBuilding.Building.ToString());
                return(false);
            }

            // did we find it
            if (buildingFound.Building == desiredBuilding.Building)
            {
                log.Info("at desired building: " + desiredBuilding.Building.ToString());
                return(true);
            }

            // do we need to switch building types
            if ((buildingFound.Building == NavigateToBuilding.FactorySwitch || buildingFound.Building == Building.HardwareStore) &&
                buildingFound.BuildingType != desiredBuilding.BuildingType
                )
            {
                touch.ClickAt(Location.BelowCentreMap);
            }
            else
            {
                touch.ClickAt(Location.RightButton);
            }

            return(NavigateTo(desiredBuilding, depth + 1));
        }