RearrangeCards() public méthode

public RearrangeCards ( ) : void
Résultat void
Exemple #1
0
        private void cardView_OnDragEnd(object sender, EventArgs e)
        {
            lock(cardArrangeLock)
            {
                CardChoiceViewModel model = DataContext as CardChoiceViewModel;
                if (model == null) return;

                _ResetHighlightSlot();
                if (_highlightedStack != null)
                {
                    int newPos = _highlightedStack.InteractingCardIndex;
                    List<CardView> backup1 = new List<CardView>(_sourceDeck.Cards);
                    List<CardView> backup2 = null;
                    _sourceDeck.Cards.Remove(InteractingCard);
                    _highlightedStack.Cards.Insert(newPos, InteractingCard);
                    _sourceDeck.InteractingCard = null;
                    _sourceDeck.CardStatus = CardInteraction.None;
                    _sourceDeck.RearrangeCards(0.2d);
                    if (_sourceDeck != _highlightedStack)
                    {
                        backup2 = new List<CardView>(_highlightedStack.Cards);
                        _highlightedStack.InteractingCard = null;
                        _highlightedStack.CardStatus = CardInteraction.None;
                        _highlightedStack.RearrangeCards(0.2d);
                    }
                    _sourceDeck = null;
                    _highlightedStack = null;
                    _UpdateAnswer();
                    if (model.Verifier.Verify(model.Answer) == Core.UI.VerifierResult.Fail)
                    {
                        _sourceDeck.Cards.Clear();
                        foreach (var card in backup1) _sourceDeck.Cards.Add(card);
                        if (_sourceDeck != _highlightedStack)
                        {
                            Trace.Assert(backup2 != null);
                            _highlightedStack.Cards.Clear();
                            foreach (var card in backup2) _highlightedStack.Cards.Add(card);
                            _highlightedStack.InteractingCard = null;
                            _UpdateAnswer();
                            _highlightedStack.CardStatus = CardInteraction.None;
                            _highlightedStack.RearrangeCards(0.2d);
                        }
                    }
                }
                else if (_sourceDeck != null)
                {
                    _sourceDeck.InteractingCard = null;
                    _sourceDeck.CardStatus = CardInteraction.None;
                    _sourceDeck.RearrangeCards(0.2d);
                }

                _UpdateVerifiedStatus();
            }
        }
Exemple #2
0
        private void cardView_OnDragEnd(object sender, EventArgs e)
        {
            CardChoiceViewModel model = DataContext as CardChoiceViewModel;

            if (model == null)
            {
                return;
            }

            _ResetHighlightSlot();
            if (_highlightedStack != null)
            {
                int             newPos  = _highlightedStack.InteractingCardIndex;
                List <CardView> backup1 = new List <CardView>(_sourceDeck.Cards);
                var             backup2 = new List <CardView>(_highlightedStack.Cards);
                int             from    = _sourceDeck.Cards.IndexOf(InteractingCard);
                int             to      = newPos;
                _sourceDeck.Cards.Remove(InteractingCard);
                _highlightedStack.Cards.Insert(newPos, InteractingCard);
                _sourceDeck.InteractingCard = null;
                _sourceDeck.CardStatus      = CardInteraction.None;
                _sourceDeck.RearrangeCards();
                if (_sourceDeck != _highlightedStack)
                {
                    _highlightedStack.InteractingCard = null;
                    _highlightedStack.CardStatus      = CardInteraction.None;
                    _highlightedStack.RearrangeCards();
                }
                _UpdateAnswer();
                if (model.Verifier.Verify(model.Answer) == Core.UI.VerifierResult.Fail)
                {
                    _sourceDeck.Cards.Clear();
                    foreach (var card in backup1)
                    {
                        _sourceDeck.Cards.Add(card);
                    }
                    _sourceDeck.RearrangeCards();
                    if (_sourceDeck != _highlightedStack)
                    {
                        Trace.Assert(backup2 != null);
                        _highlightedStack.Cards.Clear();
                        foreach (var card in backup2)
                        {
                            _highlightedStack.Cards.Add(card);
                        }
                        _highlightedStack.InteractingCard = null;
                        _UpdateAnswer();
                        _highlightedStack.CardStatus = CardInteraction.None;
                        _highlightedStack.RearrangeCards();
                    }
                }
                else
                {
                    var handle = OnCardMoved;
                    if (handle != null)
                    {
                        int s = _allCardStacks.IndexOf(_sourceDeck);
                        int d = _allCardStacks.IndexOf(_highlightedStack);
                        Trace.Assert(s >= 0 && d >= 0 && from >= 0 && to >= 0);
                        handle(s, from, d, to);
                    }
                }
                _sourceDeck       = null;
                _highlightedStack = null;
            }
            else if (_sourceDeck != null)
            {
                _sourceDeck.InteractingCard = null;
                _sourceDeck.CardStatus      = CardInteraction.None;
                _sourceDeck.RearrangeCards();
            }


            _UpdateVerifiedStatus();
        }