示例#1
0
        private void CardGridCtrl_Click(object sender, EventArgs e)
        {
            CardCtrl       cardControl = sender as CardCtrl;
            MouseEventArgs mouseArgs   = e as MouseEventArgs;

            if (cardControl != null && cardControl.GetCard() != null &&
                (mouseArgs == null || mouseArgs.Button == MouseButtons.Left))
            {
                OnCardClicked(cardControl.GetCard());
            }
        }
示例#2
0
        private void CardCtrl_MouseMove(object sender, MouseEventArgs e)
        {
            CardCtrl cardCtrlSender = (CardCtrl)sender;

            if (e.Button == MouseButtons.Left && allowRearrange && (deck != null) && !ignoreDragOnContextClose)
            {
                dragTargetIdx = dragSourceIdx = (int)cardCtrlSender.Tag;

                DeckReorderMarker dragData = new DeckReorderMarker();
                DoDragDrop(dragData, DragDropEffects.Move);
            }
        }
示例#3
0
        private void setDeckCard(int Idx, TriadCard card, bool previewOnly)
        {
            if (deck != null)
            {
                deck.SetCard(Idx, card);
            }

            CardCtrl updatedCtrl = cardCtrls[Idx];

            if (updatedCtrl.GetCard() != card)
            {
                updatedCtrl.SetCard(new TriadCardInstance(card, deckOwner));
            }

            if (OnCardChanged != null)
            {
                OnCardChanged.Invoke(cardCtrls[Idx].GetCardInst(), Idx, previewOnly);
            }

            updatedCtrl.UpdateBackColor();
            updatedCtrl.Invalidate();
        }
示例#4
0
        public void SetDeck(TriadDeck deck)
        {
            if ((clickAction == EDeckCtrlAction.Highlight) && (cardClickOwner != null))
            {
                cardClickOwner.SetHighlighted(false);
                cardClickOwner = null;
            }

            if (cardCtrls != null)
            {
                int prevCtrlCount = cardCtrls.Length;
                int numCards      = deck.knownCards.Count + deck.unknownCardPool.Count;
                if (prevCtrlCount == numCards)
                {
                    this.deck = null;
                    for (int Idx = 0; Idx < cardCtrls.Length; Idx++)
                    {
                        setDeckCard(Idx, deck.GetCard(Idx), true);
                    }

                    this.deck = deck;
                    return;
                }
            }

            if (deck.unknownCardPool.Count == 0)
            {
                SetDeck(deck.knownCards);
            }
            else
            {
                List <TriadCard> allCards = new List <TriadCard>();
                allCards.AddRange(deck.knownCards);
                allCards.AddRange(deck.unknownCardPool);
                SetDeck(allCards);
            }

            this.deck = deck;
        }
示例#5
0
        private void CardCtrl_Click(object sender, EventArgs e)
        {
            CardCtrl prevOwner = cardClickOwner;

            ignoreDragOnContextClose = false;

            cardClickOwner = (CardCtrl)sender;
            if (cardClickOwner != null)
            {
                if (clickAction == EDeckCtrlAction.Pick)
                {
                    toolStripMenuLockOptimization.Checked = lockFlags[(int)cardClickOwner.Tag];
                    contextMenuStripPickCard.Show(cardClickOwner, new Point(0, 0), ToolStripDropDownDirection.AboveRight);
                }
                else if (clickAction == EDeckCtrlAction.Highlight)
                {
                    if (prevOwner != null)
                    {
                        prevOwner.SetHighlighted(false);
                    }

                    if (OnCardSelected != null)
                    {
                        OnCardSelected.Invoke(cardClickOwner.GetCardInst(), (int)cardClickOwner.Tag);
                    }

                    if (prevOwner == cardClickOwner)
                    {
                        cardClickOwner = null;
                    }
                    else
                    {
                        cardClickOwner.SetHighlighted(true);
                    }
                }
            }
        }
示例#6
0
        public void SetDeck(IEnumerable <TriadCard> knownCards)
        {
            if ((clickAction == EDeckCtrlAction.Highlight) && (cardClickOwner != null))
            {
                cardClickOwner.SetHighlighted(false);
                cardClickOwner = null;
            }
            SuspendLayout();

            if (cardCtrls != null)
            {
                foreach (CardCtrl control in cardCtrls)
                {
                    Controls.Remove(control);
                }
            }

            int numCards = knownCards.Count();

            cardCtrls = new CardCtrl[numCards];
            int Idx = 0;

            if (lockFlags == null || lockFlags.Length != numCards)
            {
                lockFlags = new bool[numCards];
            }

            foreach (TriadCard knownCard in knownCards)
            {
                CardCtrl newCardCtrl = new CardCtrl();
                cardCtrls[Idx] = newCardCtrl;

                newCardCtrl.SetImageLists(cardIcons, cardTypes, cardRarity);
                newCardCtrl.Tag = Idx;
                newCardCtrl.defaultBackColor = BackColor;

                newCardCtrl.Location          = new Point((cardTileSize + cardTileSpacing) * Idx, 0);
                newCardCtrl.Size              = new Size(cardTileSize, cardTileSize);
                newCardCtrl.BorderStyle       = BorderStyle.FixedSingle;
                newCardCtrl.AllowDrop         = true;
                newCardCtrl.bBlinkHighlighted = (clickAction != EDeckCtrlAction.Highlight);
                newCardCtrl.bEnableHitTest    = enableHitTest;
                newCardCtrl.bIsLocked         = lockFlags[Idx];
                newCardCtrl.drawMode          = drawMode;

                if (clickAction != EDeckCtrlAction.None)
                {
                    newCardCtrl.Click += CardCtrl_Click;
                }
                if (allowRearrange)
                {
                    newCardCtrl.MouseMove += CardCtrl_MouseMove;
                    newCardCtrl.DragEnter += CardCtrl_DragEnter;
                    newCardCtrl.DragLeave += CardCtrl_DragLeave;
                    newCardCtrl.DragDrop  += CardCtrl_DragDrop;
                }

                setDeckCard(Idx, knownCard, true);
                Controls.Add(newCardCtrl);
                Idx++;
            }

            ResumeLayout();
            Invalidate();
        }