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