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