Пример #1
0
        /// <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);
            }
        }
Пример #2
0
        /// <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;
        }
Пример #3
0
        ///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();
            }
        }