Пример #1
0
        private void SetNewCard(GetCardEventArgs args)
        {
            cardCounterLabel.Text = args.CardInDeck.ToString();
            int destX = args.PlayerCards.Length * 40,
                destY = args.PlayerId == 0 ? 40 : this.Size.Height - 230;

            animations.AddLast(new CardAnimation(args.NewCard, destX, destY));
        }
Пример #2
0
        private void PlayerGetCardHandler(GetCardEventArgs args)
        {
            // Данный метод вызывается в потоке gameAccess, так что что бы обратиться к полям формы
            // необходимо вызывать метод SetNewCard асинхронно в родительском потоке поля
            // Но также нам необходимо заблокировать текущий поток, что бы игра не продолжалась,
            // пока не закончится обработка текущего события

            var result = this.BeginInvoke(new GetCardHandler(SetNewCard), args);

            this.EndInvoke(result);
            while (animations.Last() != null && animations.Last().IsPlayed)
            {
                ;
            }
        }