/// <summary> /// Animates the placement of an insurance chip on the table. /// </summary> /// <param name="amount">The amount which should appear on the chip.</param> private void AddInsuranceChipAnimation(float amount) { // Add chip component AnimatedGameComponent chipComponent = new AnimatedGameComponent(cardGame, blankChip) { TextColor = Color.Black, Enabled = true, Visible = false }; Game.Components.Add(chipComponent); // Add transition animation chipComponent.AddAnimation(new TransitionGameComponentAnimation(positions[0], new Vector2(GraphicsDevice.Viewport.Width / 2, insuranceYPosition)) { PerformBeforeStart = ShowComponent, PerformBeforSartArgs = chipComponent, PerformWhenDone = ShowChipAmountAndPlayBetSound, PerformWhenDoneArgs = new object[] { chipComponent, amount }, Duration = TimeSpan.FromSeconds(1), StartTime = DateTime.Now }); // Add flip animation chipComponent.AddAnimation(new FlipGameComponentAnimation() { Duration = TimeSpan.FromSeconds(1f), AnimationCycles = 3, }); }
/// <summary> /// Adds the chip to one of the player betting zones. /// </summary> /// <param name="playerIndex">Index of the player for whom to add /// a chip.</param> /// <param name="chipValue">The value on the chip to add.</param> /// <param name="secondHand">True if this chip is added to the chip pile /// belonging to the player's second hand.</param> public void AddChip(int playerIndex, int chipValue, bool secondHand) { // Only add the chip if the bet is successfully performed if (((BlackjackPlayer)players[playerIndex]).Bet(chipValue)) { currentBet += chipValue; // Add chip component AnimatedGameComponent chipComponent = new AnimatedGameComponent(cardGame, chipsAssets[chipValue]) { Visible = false }; Game.Components.Add(chipComponent); // Calculate the position for the new chip Vector2 position; // Get the proper offset according to the platform (pc, phone, xbox) Vector2 offset = GetChipOffset(playerIndex, secondHand); position = cardGame.GameTable[playerIndex] + offset + new Vector2(-currentChipComponent.Count * 2, currentChipComponent.Count * 1); // Find the index of the chip int currentChipIndex = 0; for (int chipIndex = 0; chipIndex < chipsAssets.Count; chipIndex++) { if (assetNames[chipIndex] == chipValue) { currentChipIndex = chipIndex; break; } } // Add transition animation chipComponent.AddAnimation(new TransitionGameComponentAnimation( positions[currentChipIndex], position) { Duration = TimeSpan.FromSeconds(1f), PerformBeforeStart = ShowComponent, PerformBeforSartArgs = chipComponent, PerformWhenDone = PlayBetSound }); // Add flip animation chipComponent.AddAnimation(new FlipGameComponentAnimation() { Duration = TimeSpan.FromSeconds(1f), AnimationCycles = 3, }); currentChipComponent.Add(chipComponent); } }