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