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