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