AddCards() public méthode

public AddCards ( IList cards ) : void
cards IList
Résultat void
Exemple #1
0
        public void UpdateModel()
        {
            CardChoiceViewModel model = DataContext as CardChoiceViewModel;
            if (model == null) return;

            _cardStacks.Children.Clear();
            _cardSlots.Children.Clear();
            _canvas.Children.Clear();
            _slotCanvas.Children.Clear();

            _allCardStacks.Clear();
            _allCardSlots.Clear();
            _originalPlace.Clear();
            _stackInfo.Clear();
            _stackToSlot.Clear();
            _resultPanel.Children.Clear();
            _resultSlotPanel.Children.Clear();

            int maxCount = (from line in model.CardStacks
                            select line.Cards.Count).Max();

            var resultDecks = from line in model.CardStacks
                              where line.IsResultDeck
                              select line;

            bool isResultHorizontal = (resultDecks.Max(l => l.Capacity) == 1);

            if (isResultHorizontal)
            {
                maxCount = Math.Max(maxCount, resultDecks.Count());
            }

            _cardStacks.Width = Math.Min(maxCount * _cardXSpacing, 570);
            if (isResultHorizontal)
            {
                _cardStacks.Height = (model.CardStacks.Count - resultDecks.Count() + 1) * _cardYSpacing;
            }
            else
            {
                _cardStacks.Height = model.CardStacks.Count * _cardYSpacing;
            }
            _cardSlots.Width = _cardStacks.Width;
            _cardSlots.Height = _cardStacks.Height;

            // First, create layout.
            foreach (var line in model.CardStacks)
            {
                CardStack slot = new CardStack() { ParentCanvas = _slotCanvas };
                slot.MaxCardSpacing = _cardXSpacing;
                slot.CardAlignment = HorizontalAlignment.Left;
                slot.Height = 130d;
                slot.Margin = new Thickness(1, 10, 1, 10);

                if (isResultHorizontal && line.IsResultDeck)
                {
                    slot.HorizontalAlignment = HorizontalAlignment.Left;
                    slot.Width = line.Capacity * _cardXSpacing;
                    _resultSlotPanel.Children.Add(slot);
                }
                else
                {
                    slot.HorizontalAlignment = HorizontalAlignment.Stretch;
                    _cardSlots.Children.Add(slot);
                }

                if (line.IsResultDeck)
                {
                    string key = string.Format("CardSlot.Hint.{0}", line.DeckName);
                    string hint = Resources.Contains(key) ? Resources[key] as string : string.Empty;
                    var slots = new List<CardViewModel>();
                    for (int i = 0; i < line.Capacity; i++)
                    {

                        slots.Add(new CardSlotViewModel() { Hint = hint, Card = null });
                    }
                    slot.AddCards(slots);
                    foreach (var cardSlot in slot.Cards)
                    {
                        cardSlot.IsHitTestVisible = false;
                    }
                }

                CardStack stack = new CardStack() { ParentCanvas = _canvas };
                stack.MaxCardSpacing = _cardXSpacing;
                stack.CardAlignment = HorizontalAlignment.Left;
                stack.Height = 130d;
                stack.Margin = new Thickness(1, 10, 1, 10);
                stack.AddCards(line.Cards);

                _stackInfo.Add(stack, line);

                foreach (var cardView in stack.Cards)
                {
                    _originalPlace.Add(cardView, stack);
                    if (!model.DisplayOnly)
                    {
                        cardView.DragDirection = DragDirection.Both;
                        cardView.OnDragBegin += cardView_OnDragBegin;
                        cardView.OnDragging += cardView_OnDragging;
                        cardView.OnDragEnd += cardView_OnDragEnd;
                    }
                }

                if (isResultHorizontal && line.IsResultDeck)
                {
                    stack.HorizontalAlignment = HorizontalAlignment.Left;
                    stack.Width = line.Capacity * _cardXSpacing;
                    _resultPanel.Children.Add(stack);
                }
                else
                {
                    stack.HorizontalAlignment = HorizontalAlignment.Stretch;
                    _cardStacks.Children.Add(stack);
                }

                _stackToSlot.Add(stack, slot);

                _allCardStacks.Add(stack);
                _allCardSlots.Add(slot);
            }

            if (isResultHorizontal)
            {
                _cardStacks.Children.Add(_resultPanel);
                _cardSlots.Children.Add(_resultSlotPanel);
            }
            _UpdateAnswer();
            _UpdateVerifiedStatus();

            // Progress bar
            if (model.TimeOutSeconds > 0)
            {
                Duration duration = new Duration(TimeSpan.FromSeconds(model.TimeOutSeconds));
                DoubleAnimation doubleanimation = new DoubleAnimation(100d, 0d, duration);
                progressBar.BeginAnimation(ProgressBar.ValueProperty, doubleanimation);
            }
        }
Exemple #2
0
        public void UpdateModel()
        {
            CardChoiceViewModel model = DataContext as CardChoiceViewModel;

            if (model == null)
            {
                return;
            }

            _cardStacks.Children.Clear();
            _cardSlots.Children.Clear();
            _canvas.Children.Clear();
            _slotCanvas.Children.Clear();

            _allCardStacks.Clear();
            _allCardSlots.Clear();
            _originalPlace.Clear();
            _stackInfo.Clear();
            _stackToSlot.Clear();
            _resultPanel.Children.Clear();
            _resultSlotPanel.Children.Clear();

            int maxCount = (from line in model.CardStacks
                            select line.Cards.Count).Max();

            var resultDecks = from line in model.CardStacks
                              where line.IsResultDeck
                              select line;

            bool isResultHorizontal = (resultDecks.Max(l => l.Capacity) == 1);

            if (isResultHorizontal)
            {
                maxCount = Math.Max(maxCount, resultDecks.Count());
            }

            _cardStacks.Width = Math.Min(maxCount * Settings.CardChoiceBox.CardXSpacing, Settings.CardChoiceBox.MaxWindowWidth);
            if (isResultHorizontal)
            {
                _cardStacks.Height = (model.CardStacks.Count - resultDecks.Count() + 1) * Settings.CardChoiceBox.CardYSpacing;
            }
            else
            {
                _cardStacks.Height = model.CardStacks.Count * Settings.CardChoiceBox.CardYSpacing;
            }
            _cardSlots.Width  = _cardStacks.Width;
            _cardSlots.Height = _cardStacks.Height;

            ObservableCollection <string> deckNames = new ObservableCollection <string>();

            // First, create layout.
            foreach (var line in model.CardStacks)
            {
                CardStack slot = new CardStack()
                {
                    ParentCanvas = _slotCanvas
                };
                slot.MaxCardSpacing = Settings.CardChoiceBox.CardXSpacing;
                slot.CardAlignment  = HorizontalAlignment.Left;
                slot.Height         = 130d;
                slot.Margin         = new Thickness(1, 10, 1, 10);

                if (isResultHorizontal && line.IsResultDeck)
                {
                    slot.HorizontalAlignment = HorizontalAlignment.Left;
                    slot.Width = line.Capacity * Settings.CardChoiceBox.CardXSpacing;
                    _resultSlotPanel.Children.Add(slot);
                }
                else
                {
                    slot.HorizontalAlignment = HorizontalAlignment.Stretch;
                    _cardSlots.Children.Add(slot);
                }

                if (line.IsResultDeck)
                {
                    string key   = string.Format("CardSlot.Hint.{0}", line.DeckName);
                    string hint  = (Application.Current.TryFindResource(key) as string) ?? string.Empty;
                    var    slots = new List <CardViewModel>();
                    for (int i = 0; i < line.Capacity; i++)
                    {
                        slots.Add(new CardSlotViewModel()
                        {
                            Hint = hint, Card = null
                        });
                    }
                    slot.AddCards(slots);
                    foreach (var cardSlot in slot.Cards)
                    {
                        cardSlot.IsHitTestVisible = false;
                    }
                }
                else
                {
                    deckNames.Add(line.DeckName);
                }

                var stack = new SingleRowCardStack()
                {
                    ParentCanvas = _canvas
                };
                stack.IsDraggingHandled           = false;
                stack.MaxCardSpacing              = Settings.CardChoiceBox.CardXSpacing;
                stack.MaxCardSpacingOnHighlighted = Settings.CardChoiceBox.CardXSpacing;
                stack.CardAlignment = HorizontalAlignment.Left;
                stack.Height        = 130d;
                stack.Margin        = new Thickness(1, 10, 1, 10);
                stack.AddCards(line.Cards);

                _stackInfo.Add(stack, line);

                foreach (var cardView in stack.Cards)
                {
                    _originalPlace.Add(cardView, stack);
                    if (!model.DisplayOnly)
                    {
                        cardView.DragDirection = DragDirection.Both;
                        cardView.OnDragBegin  += cardView_OnDragBegin;
                        cardView.OnDragging   += cardView_OnDragging;
                        cardView.OnDragEnd    += cardView_OnDragEnd;
                    }
                }

                if (isResultHorizontal && line.IsResultDeck)
                {
                    stack.HorizontalAlignment = HorizontalAlignment.Left;
                    stack.Width = line.Capacity * Settings.CardChoiceBox.CardXSpacing;
                    _resultPanel.Children.Add(stack);
                }
                else
                {
                    stack.HorizontalAlignment = HorizontalAlignment.Left;
                    stack.Width = _cardStacks.Width;
                    _cardStacks.Children.Add(stack);
                }

                _stackToSlot.Add(stack, slot);

                _allCardStacks.Add(stack);
                _allCardSlots.Add(slot);
            }

            deckIcons.ItemsSource = deckNames;

            if (isResultHorizontal)
            {
                _cardStacks.Children.Add(_resultPanel);
                _cardSlots.Children.Add(_resultSlotPanel);
            }
            _UpdateAnswer();
            _UpdateVerifiedStatus();

            // Progress bar
            if (model.TimeOutSeconds > 0)
            {
                Duration        duration        = new Duration(TimeSpan.FromSeconds(model.TimeOutSeconds));
                DoubleAnimation doubleanimation = new DoubleAnimation(100d, 0d, duration);
                progressBar.BeginAnimation(ProgressBar.ValueProperty, doubleanimation);
            }
        }