Exemplo n.º 1
0
        /// <summary>
        /// Returns the item as CardSetModelView if it represents a deck. If it represents
        /// a card it returns that card's visual parent which should be a deck.
        /// </summary>
        /// <param name="item"></param>
        public static ICardDeckViewItem InferDeck(TreeViewItem item, DragEventArgs e = null)
        {
            ITreeViewItem itemData = item.DataContext as ITreeViewItem;

            if (itemData != null && itemData.IsLeaf)
            {
                //this is a child, get its parent
                TreeViewItem parent = GetParentTreeViewItem(item as DependencyObject);

                if (parent == null)
                {
                    return(null);
                }
                ICardDeckViewItem set = parent.DataContext as ICardDeckViewItem;
                if (set != null && !set.IsLeaf)
                {
                    return(set as ICardDeckViewItem);
                }
            }
            else
            {
                //this is a parent, return it
                return(item.DataContext as ICardDeckViewItem);
            }

            return(null);
        }
Exemplo n.º 2
0
        public void SwitchDeckOrder(ICardDeckViewItem moving, ICardDeckViewItem location, bool before = true)
        {
            ValidateDecks();
            if (moving == null || location == null)
            {
                return;
            }

            _Decks.Remove(moving as DeckViewItem);
            for (int index = 0; index < _Decks.Count; index++)
            {
                if (_Decks[index] == location)
                {
                    if (before)
                    {
                        _Decks.Insert(index, moving as DeckViewItem);
                    }
                    else
                    {
                        _Decks.Insert(index + 1, moving as DeckViewItem);
                    }
                    return;
                }
            }

            return;
        }
Exemplo n.º 3
0
        public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            //BUG: card names will not update in realtime like this
            TreeViewItem cardItem = values[1] as TreeViewItem;
            TreeViewItem deckItem = values[2] as TreeViewItem;

            ////TreeView view = parameter as TreeView;
            ITreeViewItem     cardModel = cardItem.DataContext as ITreeViewItem;
            ICardDeckViewItem deck      = null;

            if (values.Length > 1 && deckItem != null && deckItem.DataContext != null)
            {
                deck = TreeHelper.InferDeck(cardItem);// deckItem.DataContext as ICardDeckViewItem;
            }

            ////return deck names
            if (cardModel.IsLeaf)
            {
                //MessageBox.Show(deckItem.Name);
                if (deck != null)
                {
                    int mul = deck.GetMultiples(cardModel as ICardModel);
                    if (mul != 1)
                    {
                        return(cardModel.Name + "  x" + mul);
                    }
                }
                return(cardModel.Name);
            }

            ////we need to see how many of these guys are in the deck
            return(cardModel.Name);
        }
Exemplo n.º 4
0
 public void RemoveDeck(ICardDeckViewItem deck)
 {
     ValidateDecks();
     if (deck == null)
     {
         return;
     }
     _Decks.Remove(deck as DeckViewItem);
 }
Exemplo n.º 5
0
        public bool RenameDeck(ICardDeckViewItem deck, string newName)
        {
            ValidateDecks();
            if (deck == null)
            {
                return(false);
            }
            if (!_Decks.Contains(deck))
            {
                throw new InvalidOperationException("The deck '" + ((ICardDeckModel)deck).Name + "' does not exist within this game project.");
            }

            //first, make sure the new name isn't invalid
            foreach (ICardDeckViewItem s in _Decks)
            {
                if (((ICardDeckModel)s).Name.Equals(newName))
                {
                    throw new InvalidOperationException("A deck with the name '" + newName + "' already exists.");
                }
            }

            return(true);
        }