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