/// <summary> /// On click handler /// </summary> /// <param name="e"></param> protected virtual void OnClickDone(OnClickDoneArgs e) { EventHandler <OnClickDoneArgs> eventHandler = onClickDone; if (eventHandler != null) { eventHandler(this, e); } }
/// <summary> /// Build the actual game grid /// </summary> /// <param name="cards">The cards for the game</param> /// <param name="xAmount">amount of cards in the widht</param> /// <param name="yAmount">amount of cards in height</param> /// <param name="cardSizeX">size of the card</param> /// <param name="cardSizeY">size of the card</param> /// <param name="cardMargins">space between the cards</param> public void Build(Card[,] cards, int xAmount, int yAmount, int cardSizeX, int cardSizeY, int cardMargins) { //Cards.Count() needs to be more or equale too (x * y) if (cards.Length < xAmount * yAmount) { Console.WriteLine("Cards.Count() needs to be more or equale too (x * y)"); return; } GridLength gridheight = new GridLength(cardSizeY + cardMargins * 2); GridLength gridWidth = new GridLength(cardSizeX + cardMargins * 2); Thickness margins = new Thickness(); margins.Left = (MainWindow.SCREEN_WIDTH / 2) - ((cardSizeX + cardMargins * 2) * (float)xAmount / 2f); margins.Top = (MainWindow.SCREEN_HEIGHT / 2) - ((cardSizeY + cardMargins * 2) * (float)yAmount / 2f); this.Margin = margins; for (int i = 0; i < xAmount; i++) { this.ColumnDefinitions.Add(new ColumnDefinition() { Width = gridWidth }); for (int j = 0; j < yAmount; j++) { this.RowDefinitions.Add(new RowDefinition() { Height = gridheight }); Border b = new Border(); Card c = cards[i, j]; b.Height = c.Height; b.Width = c.Width; b.Margin = new Thickness(cardMargins); Grid.SetColumn(b, i); Grid.SetRow(b, j); b.Child = c; Children.Add(b); } } doneArgs = new OnClickDoneArgs(); firstCardClicked = false; localPaused = false; }
///TODO documentation /// <summary> /// handle the card being clicked /// </summary> /// <param name="c"></param> private void CardClicked(Card c) { if (waitForFlip != null) { if (waitForFlip.IsFlipping()) { return; } } if (doneArgs.firstCard == null) { doneArgs.firstCard = c; c.Flip(); firstCardClicked = true; } else { if (doneArgs.firstCard == c) { return; } doneArgs.secondCard = c; c.Flip(); doneArgs.Correct = (doneArgs.firstCard.ID == c.ID); if (!doneArgs.Correct) { currentlyFlippingA = doneArgs.firstCard; currentlyFlippingB = doneArgs.secondCard; waitForFlip = currentlyFlippingB; flipTimer.Tick += FlipTimer_Tick; } waitForFlip = currentlyFlippingB; OnClickDone(doneArgs); firstCardClicked = false; doneArgs = new OnClickDoneArgs(); } }