Octgn.Play.Gui.CardControl.MouseButtonUpAction C# (CSharp) Method

MouseButtonUpAction() private method

private MouseButtonUpAction ( System.Windows.Input.MouseButtonEventArgs e ) : void
e System.Windows.Input.MouseButtonEventArgs
return void
        private void MouseButtonUpAction(MouseButtonEventArgs e)
        {
            base.OnMouseUp(e);

            var shouldFireEvent = true;

            switch (e.ChangedButton)
            {
                case MouseButton.Left:
                    if (IsMouseCaptured) ReleaseMouseCapture();

                    if (_dragSource == DragSource.Card)
                    {
                        shouldFireEvent = false;
                        e.Handled = true;
                        _dragSource = DragSource.None;
                        if (!_isDragging)
                        {
                            Program.GameEngine.EventProxy.OnCardClick_3_1_0_0(Card, (int)e.ChangedButton, downKeys);
                            Program.GameEngine.EventProxy.OnCardClick_3_1_0_1(Card, (int)e.ChangedButton, downKeys);
                            Program.GameEngine.EventProxy.OnCardClicked_3_1_0_2(Card, (int)e.ChangedButton, downKeys);
                        }
                        DragCardCompleted();
                        break;
                    }

                    if (_dragSource == DragSource.Target)
                    {
                        shouldFireEvent = false;
                        e.Handled = true;
                        _dragSource = DragSource.None;
                        if (_draggedArrow != null)
                        {
                            _draggedArrow.RemoveFromLayer();
                            _draggedArrow = null;
                        }

                        if (_isDragging)
                        {
                            _isDragging = false;
                        }

                        var dependencyObject = Mouse.DirectlyOver as DependencyObject;
                        while (dependencyObject != null && !(dependencyObject is CardControl))
                        {
                            DependencyObject parent = LogicalTreeHelper.GetParent(dependencyObject) ??
                                                      VisualTreeHelper.GetParent(dependencyObject);
                            dependencyObject = parent;
                        }

                        if (dependencyObject == this)
                            Card.ToggleTarget(false);
                        else if (dependencyObject != null && ((CardControl)dependencyObject).Card.Group is Table)
                            Card.Target(((CardControl)dependencyObject).Card, false);
                    }
                    break;
            }
            if (shouldFireEvent)
            {
                Program.GameEngine.EventProxy.OnCardClick_3_1_0_0(Card, (int)e.ChangedButton, downKeys);
                Program.GameEngine.EventProxy.OnCardClick_3_1_0_1(Card, (int)e.ChangedButton, downKeys);
                Program.GameEngine.EventProxy.OnCardClicked_3_1_0_2(Card, (int)e.ChangedButton, downKeys);
            }
        }