Exemple #1
0
        /// <summary>
        /// Funkcja grupuje pieniądze graczy na jeden główny stack
        /// </summary>
        public void OnCashierGroupMoney(EventHandler OnAnimationCompleted)
        {
            Vector     offsetTableStack = VisualTreeHelper.GetOffset(TableStack);
            Storyboard story            = new Storyboard();

            foreach (GameControls.Chips playerCashControl in this.CashierWorkspace.Children)
            {
                TranslateTransform trans = new TranslateTransform();
                playerCashControl.RenderTransform = trans;
                DoubleAnimation animY = new DoubleAnimation(0, offsetTableStack.Y - Canvas.GetTop(playerCashControl), TimeSpan.FromSeconds(0.4));
                DoubleAnimation animX = new DoubleAnimation(0, offsetTableStack.X - Canvas.GetLeft(playerCashControl), TimeSpan.FromSeconds(0.4));

                Storyboard.SetTarget(animX, playerCashControl);
                Storyboard.SetTarget(animY, playerCashControl);
                Storyboard.SetTargetProperty(animX, new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X)"));
                Storyboard.SetTargetProperty(animY, new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.Y)"));

                story.Children.Add(animY);
                story.Children.Add(animX);
            }

            story.Completed += (object sender, EventArgs e) =>
            {
                //Zamieniamy aktualny stack na jedna duza kupke

                //Liczymy pule
                this.CashierWorkspace.Children.Clear();

                var tablePotStack = new GameControls.Chips(null);
                tablePotStack.AddChips(this.GameTable.TablePot);

                Canvas.SetLeft(tablePotStack, offsetTableStack.X);
                Canvas.SetTop(tablePotStack, offsetTableStack.Y);

                this.CashierWorkspace.Children.Add(tablePotStack);
            };

            story.Completed += OnAnimationCompleted;
            story.Begin();
        }
Exemple #2
0
        /// <summary>
        /// Dodaje kwotę na stół, gdy istnieje zmienia stan aktualnej
        /// </summary>
        /// <param name="player"></param>
        /// <param name="bid"></param>
        public void OnPlayerBid(PlayerModel player, decimal bid)
        {
            //Wyszukujemy kontrolkę odpowiedzialną za wyświetlanie naszego gracza
            GameControls.Seat seatObject = ellipseTableSeats.Children.
                                           OfType <GameControls.Seat>().
                                           FirstOrDefault(s => s.player != null && s.player.User.ID == player.User.ID);

            if (seatObject == null)
            {
                return;
            }

            Vector playerCash = VisualTreeHelper.GetOffset(seatObject);
            Vector globalCash = VisualTreeHelper.GetOffset(TableStack);

            //Sprawdzamy czy już istnieje taka pozycja, jeśli tak zmieniamy ją na nową, jeśli nie dodajemy stack na planszę
            var playerChipsStack = this.CashierWorkspace.Children.
                                   OfType <GameControls.Chips>().
                                   FirstOrDefault(c => c.seat.player != null && c.seat.player.User.ID == player.User.ID);

            //Dodajemy stack na planszę
            if (playerChipsStack == null)
            {
                //Gdy mamy gotową pozycję dodajemy element GameControls.Chips do CashierWorkspace
                var playerCashControl = new GameControls.Chips(this.SeatList.FirstOrDefault(s => s.player != null && s.player.User.ID == player.User.ID));
                playerCashControl.SetChips(bid);

                double distance = 50;
                double scaleX   = 1.0;
                double scaleY   = 1.0;

                if (playerCash.Y < globalCash.Y) //górne pozycje
                {
                    distance = 35;
                    scaleX   = 3.5;
                }
                else //dolne pozycje
                {
                    distance = 90;
                    scaleX   = 1.55;
                }


                var stackPosition = Helper.MovePointTowards(
                    new Point(playerCash.X + seatObject.ActualWidth / 2, playerCash.Y + seatObject.ActualHeight / 2),
                    new Point(globalCash.X, globalCash.Y),
                    distance,
                    scaleX,
                    scaleY
                    );

                Canvas.SetLeft(playerCashControl, stackPosition.X);
                Canvas.SetTop(playerCashControl, stackPosition.Y);

                //Dodajemt element do naszej gry
                this.CashierWorkspace.Children.Add(playerCashControl);
            }
            else
            {
                playerChipsStack.AddChips(bid);
            }
        }