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