private bool DetermineYouGiveAmount(bool fireEvent)
 {
     int i = 0;
     while (i++ < 10 && _windowManager.InTrade())
     {
         var ocr = new Ocr();
         ocr.AddToCollectionImage(_pbv.YouGiveAmountNumber, _pbv.YouGiveAmountBlankSpace, _pbv.YouGiveAmountName);
         var text = ocr.ExtractTextFromScreen();
         try
         {
             YouGiveAmount = GetAmountFromString(text);
             return YouGiveAmountChanged;
         }
         catch (Exception ex)
         {
             _logger.Error(ex, "Conversion of you give amount failed for: " + text);
             _windowManager.CloseTradeCancelledDialog();
         }
         finally
         {
             if (YouGiveAmountChangedEvent != null && fireEvent)
             {
                 YouGiveAmountChangedEvent(this, EventArgs.Empty);
             }
         }
     }
     return YouGiveAmountChanged;
 }
        public void DetermineYouGetAmount()
        {
            var ocr = new Ocr();
            ocr.AddToCollectionImage(_pbv.YouGetAmountNumber, _pbv.YouGetAmountBlankSpace, _pbv.YouGetAmountName);
            var text = ocr.ExtractTextFromScreen();

            try
            {
                YouGetAmount = GetAmountFromString(text);
            }
            catch (Exception ex)
            {
                _logger.Error(ex, "Conversion of you get amount failed for: " + text);
                _windowManager.CloseTradeCancelledDialog();
            }
        }
 public int DetermineYouGiveConfirmedAmount()
 {
     var ocr = new Ocr();
     ocr.AddToCollectionImage(_pbv.YouGiveAmountNumberConfirmed, _pbv.YouGiveAmountBlankSpaceConfirmed, _pbv.YouGiveAmountNameConfirmed);
     var text = ocr.ExtractTextFromScreen();
     try
     {
         return GetAmountFromString(text);
     }
     catch (Exception ex)
     {
         _logger.Error(ex, "Conversion of you give amount failed on confirmation screen for: " + text);
     }
     return 0;
 }
        public Dictionary<int, MagicCard> DetermineCards(List<Square> cardLocations, Square setPosition, Square numberPosition, int slowDownAmount = 100, int currentCardCount = 0, int maxCardCount = 75)
        {
            Ocr ocr = new Ocr();

            _windowManager.CloseTradeCancelledDialog();

            AutoItX.Sleep(100);
            var firstPosition = cardLocations[0].MidPoint;
            AutoItX.MouseClick(firstPosition);
            AutoItX.Sleep(100);

            AutoItX.Send(Constants.HomeKey);
            AutoItX.Sleep(250);

            AutoItX.MouseMove(firstPosition.X,
                              firstPosition.Y - 35);

            Square currentCard = cardLocations[0].Copy();
            int lastCardNameChecksum = 0;
            int lastCardSetChecksum = 0;
            int currentCardSetChecksum = 1;
            int currentCardNameChecksum = 1;

            int i = 0;

            while ((!lastCardNameChecksum.Equals(currentCardNameChecksum)
                || !lastCardSetChecksum.Equals(currentCardSetChecksum))
                   && currentCardCount++ <= maxCardCount)
            {
                var j = 0;
                while (AutoItX.PixelGetColor(currentCard.Copy().MoveAlongYAxis(1).TopLeft) != _pbv.CardSelectedColor &&
                       j < 50)
                {
                    AutoItX.Sleep(50);
                    if (j == 10)
                    {
                        if (i < 4)
                        {
                            return SplitCombinedImageFile(ocr, true);
                        }
                    }

                    if (++j == 50)
                    {
                        AutoItX.Send(Constants.DownArrow);
                        AutoItX.Sleep(100);
                        if (AutoItX.PixelGetColor(currentCard.TopLeft) != _pbv.CardSelectedColor)
                        {
                            return SplitCombinedImageFile(ocr, true);
                        }
                    }
                }

                lastCardNameChecksum = currentCardNameChecksum;
                currentCardNameChecksum = AutoItX.PixelChecksum(currentCard);

                lastCardSetChecksum = currentCardSetChecksum;
                currentCardSetChecksum = AutoItX.PixelChecksum(setPosition);

                ocr.AddToCollectionImage(currentCard, numberPosition, setPosition);
                AutoItX.Send(Constants.DownArrow);

                if (++i < cardLocations.Count)
                {
                    currentCard = cardLocations[i].Copy();
                    setPosition.MoveTopEdgeTo(currentCard.TopEdge);
                    setPosition.MoveBottomEdgeTo(currentCard.BottomEdge);
                    numberPosition.MoveTopEdgeTo(currentCard.TopEdge);
                    numberPosition.MoveBottomEdgeTo(currentCard.BottomEdge);
                }
                else
                {
                    AutoItX.Sleep(slowDownAmount);
                }
            }

            return SplitCombinedImageFile(ocr, true);
        }