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()); }
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); }
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 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); } }
private void SelectBuilding(BuildingMatch buildingMatch) { navigateToBuilding.NavigateTo(buildingMatch, 1); // pick up any items PickUpItems(); // reselect navigateToBuilding.NavigateTo(buildingMatch, 1); }
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); }
public static BuildingMatch Get(Building building) { return(BuildingMatch.Create().Where(b => b.Building == building).FirstOrDefault()); }
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; * } */ }
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)); }