示例#1
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);
                }
            }
        }
        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));
        }