public void KillBoardCard(BoardUnit cardToDestroy) { if (cardToDestroy == null) { return; } if (_lastBoardUntilOnPreview != null && cardToDestroy == _lastBoardUntilOnPreview) { DestroyCardPreview(); } cardToDestroy.Transform.position = new Vector3(cardToDestroy.Transform.position.x, cardToDestroy.Transform.position.y, cardToDestroy.Transform.position.z + 0.2f); _timerManager.AddTimer( x => { cardToDestroy.Transform.DOShakePosition(.7f, 0.25f, 10, 90, false, false); string cardDeathSoundName = cardToDestroy.Card.LibraryCard.Name.ToLower() + "_" + Constants.CardSoundDeath; float soundLength = 0f; if (!cardToDestroy.OwnerPlayer.Equals(_gameplayManager.CurrentTurnPlayer)) { _soundManager.PlaySound(Enumerators.SoundType.CARDS, cardDeathSoundName, Constants.ZombieDeathVoDelayBeforeFadeout, Constants.ZombiesSoundVolume, Enumerators.CardSoundType.DEATH); soundLength = _soundManager.GetSoundLength(Enumerators.SoundType.CARDS, cardDeathSoundName); } _timerManager.AddTimer( t => { cardToDestroy.OwnerPlayer.BoardCards.Remove(cardToDestroy); cardToDestroy.OwnerPlayer.RemoveCardFromBoard(cardToDestroy.Card); cardToDestroy.OwnerPlayer.AddCardToGraveyard(cardToDestroy.Card); cardToDestroy.InvokeUnitDied(); cardToDestroy.Transform.DOKill(); Object.Destroy(cardToDestroy.GameObject); _timerManager.AddTimer( f => { UpdatePositionOfBoardUnitsOfOpponent(); UpdatePositionOfBoardUnitsOfPlayer(_gameplayManager.CurrentPlayer.BoardCards); }, null, Time.deltaTime); }, null, soundLength); }); }