IEnumerator DoActionShowCard(List <sbyte> _valueCards, Poker_PlayerGroup _playerGroup)
    {
        ICardInfo _cardInfo = null;

        for (int i = 0; i < _valueCards.Count; i++)
        {
            _cardInfo = Poker_GamePlay_Manager.instance.GetCardInfo(_valueCards[i]);
            if (_cardInfo == null)
            {
                                #if TEST
                Debug.LogError("_cardInfo is NULL : " + _valueCards[i]);
                                #endif
                continue;
            }
            PanelCardDetailController _panelCardDetail = (PanelCardDetailController)_playerGroup.ownCardPoolManager.listObjects[i];
            CoroutineChain.Start
            .Parallel(_panelCardDetail.Move(_playerGroup.cardOpenHoldersCatched[i].position, 0.1f, LeanTweenType.easeOutSine)
                      , _panelCardDetail.Rotate(_playerGroup.cardOpenHoldersCatched[i].rotation.eulerAngles, 0.1f)
                      , _panelCardDetail.ScaleTo(_playerGroup.cardOpenHoldersCatched[i].localScale, 0.1f, LeanTweenType.notUsed))
            .Sequential(_panelCardDetail.Show(_cardInfo));
        }
        yield return(1f);
    }
    IEnumerator DoActionShowResult()
    {
        if (currentGameState == GameState.ShowResult)
        {
            Debug.LogError("Đang show result rồi");
            yield break;
        }

        DragonTigerCasinoData.DragonTiger_Result_Data _resultData = dragonTigerCasinoData.processResultData[0];

        currentGameState = GameState.ShowResult;

        // ---- Merge dữ liệu ---- //
        int _cardDragon = ((int)_resultData.cardDragon) % 13;
        int _cardTiger  = ((int)_resultData.cardTiger) % 13;

        if (_cardDragon > _cardTiger)
        {
            dragonTigerCasinoData.listHistory.Add((int)IndexBet.Dragon);
        }
        else if (_cardDragon < _cardTiger)
        {
            dragonTigerCasinoData.listHistory.Add((int)IndexBet.Tiger);
        }
        else
        {
            dragonTigerCasinoData.listHistory.Add((int)IndexBet.Tie);
        }
        dragonTigerCasinoData.CheckListHistoryAgain();

        dragonTigerCasinoData.ResetTableBet();
        dragonTigerCasinoData.nextTimeToShowResult = _resultData.nextTimeToShowResult;

        DataManager.instance.userData.gold = _resultData.GOLD;
        DataManager.instance.userData.SetTotalBetInGameInfo(IMiniGameInfo.Type.DragonTigerCasino, 0);

        if (_resultData.caseCheck == 1)
        {
            AchievementDetail _achievementDetail = DataManager.instance.achievementData.GetAchievementDetail(IMiniGameInfo.Type.DragonTigerCasino);
            if (_achievementDetail != null)
            {
                if (_resultData.goldProcess > 0)
                {
                    _achievementDetail.countWin = _resultData.achievement;
                }
                else if (_resultData.goldProcess < 0)
                {
                    _achievementDetail.countLose = _resultData.achievement;
                }
                else
                {
                    _achievementDetail.countDraw = _resultData.achievement;
                }
            }
            else
            {
                Debug.LogError(">>> _achievementDetail is null");
            }
        }
        else if (_resultData.caseCheck == -88)
        {
            PopupManager.Instance.CreatePopupMessage(MyLocalize.GetString(MyLocalize.kError)
                                                     , MyLocalize.GetString("Error/GamePlay_BetError_0")
                                                     , _resultData.caseCheck.ToString()
                                                     , MyLocalize.GetString(MyLocalize.kOk));
        }
        // ----------------------- //

        if (callbackManager != null && callbackManager.onStartShowResult != null)
        {
            callbackManager.onStartShowResult();
        }

        ICardInfo _cardDragonInfo = GetCardInfo(_resultData.cardDragon);

        if (_cardDragonInfo == null)
        {
            Debug.LogError("_cardDragonInfo is null");
        }
        ICardInfo _cardTigerInfo = GetCardInfo(_resultData.cardTiger);

        if (_cardTigerInfo == null)
        {
            Debug.LogError("_cardTigerInfo is null");
        }

        float _timeShow = 0.2f;

        yield return(CoroutineChain.Start
                     .Sequential(cardDragon.Move(cardDragonShowPlaceHolder.position, _timeShow, LeanTweenType.easeInSine, myAudioInfo.sfx_Card)
                                 , cardTiger.Move(cardTigerShowPlaceHolder.position, _timeShow, LeanTweenType.easeInSine, myAudioInfo.sfx_Card))
                     .Sequential(cardDragon.ScaleTo(Vector2.one * 2f, _timeShow, LeanTweenType.easeInSine, myAudioInfo.sfx_Card)
                                 , cardTiger.ScaleTo(Vector2.one * 2f, _timeShow, LeanTweenType.easeInSine, myAudioInfo.sfx_Card))
                     .Parallel(cardDragon.Show(_cardDragonInfo, myAudioInfo.sfx_Card)
                               , cardTiger.Show(_cardTigerInfo, myAudioInfo.sfx_Card)));

        yield return(Yielders.Get(1f));

        Vector2 _start      = Vector2.zero;
        bool    _isFinished = false;

        if (_cardDragon > _cardTiger)
        {
            _start = showEffWinGold_Dragon_PlaceHolder.position;
            yield return(cardTiger.ScaleTo(Vector2.one, _timeShow, LeanTweenType.easeInSine, myAudioInfo.sfx_Card));

            cardTiger.SetUpShadow(true);
            panelTableBetTiger.SetShadow(true);
            panelTableBetTie.SetShadow(true);

            MyAudioManager.instance.PlaySfx(myAudioInfo.sfx_ShowResult);
            cardDragon.SetUpLoopHighlight(() => {
                _isFinished = true;
            });
            yield return(new WaitUntil(() => _isFinished));

            yield return(cardDragon.ScaleTo(Vector2.one, _timeShow, LeanTweenType.easeInSine, myAudioInfo.sfx_Card));
            // panelTableBetDragon.SetUpHighlight();
        }
        else if (_cardDragon < _cardTiger)
        {
            _start = showEffWinGold_Tiger_PlaceHolder.position;
            yield return(cardDragon.ScaleTo(Vector2.one, _timeShow, LeanTweenType.easeInSine, myAudioInfo.sfx_Card));

            cardDragon.SetUpShadow(true);

            panelTableBetDragon.SetShadow(true);
            panelTableBetTie.SetShadow(true);

            MyAudioManager.instance.PlaySfx(myAudioInfo.sfx_ShowResult);
            cardTiger.SetUpLoopHighlight(() => {
                _isFinished = true;
            });
            yield return(new WaitUntil(() => _isFinished));

            yield return(cardTiger.ScaleTo(Vector2.one, _timeShow, LeanTweenType.easeInSine, myAudioInfo.sfx_Card));
            // panelTableBetTiger.SetUpHighlight();
        }
        else
        {
            _start = showEffWinGold_Tie_PlaceHolder.position;
            yield return(CoroutineChain.Start
                         .Parallel(cardDragon.ScaleTo(Vector2.one, _timeShow, LeanTweenType.easeInSine, myAudioInfo.sfx_Card)
                                   , cardTiger.ScaleTo(Vector2.one, _timeShow, LeanTweenType.easeInSine, myAudioInfo.sfx_Card)));

            panelTableBetDragon.SetShadow(true);
            panelTableBetTiger.SetShadow(true);

            MyAudioManager.instance.PlaySfx(myAudioInfo.sfx_ShowResult);
            panelTableBetTie.SetUpHighlight(() => {
                _isFinished = true;
            });
            yield return(new WaitUntil(() => _isFinished));
        }

        if (_resultData.betUnit > 0)
        {
            Vector2 _end = iconGoldHolder.position;
            StartCoroutine(MyConstant.DoActionShowPopupWinGold(panelBonusGoldPrefab, effectPoolManager, myCanvas.transform
                                                               , showEffPanelGoldBonusEffPlaceHolder.position, 1.1f, _resultData.betUnit
                                                               , () => {
                panelUserInGame.RefreshGoldInfo();
            }));
            yield return(StartCoroutine(MyConstant.DoActionShowEffectGoldFly(goldPrefab, effectPoolManager, sortingLayerManager.sortingLayerInfo_GoldObject
                                                                             , _start, _end, 10, ratioScale, 0.8f
                                                                             , () => {
                MyAudioManager.instance.PlaySfx(GameInformation.instance.globalAudioInfo.sfx_Gold);
            })));
        }

        panelTableBetDragon.SetShadow(false);
        panelTableBetTie.SetShadow(false);
        panelTableBetTiger.SetShadow(false);

        cardDragon.SetUpShadow(false);
        cardTiger.SetUpShadow(false);

        yield return(CoroutineChain.Start
                     .Parallel(cardDragon.Move(posistionSpawnCard, 0.3f, LeanTweenType.easeInSine, myAudioInfo.sfx_Card),
                               cardTiger.Move(posistionSpawnCard, 0.3f, LeanTweenType.easeInSine, myAudioInfo.sfx_Card)));

        cardDragon.SelfDestruction();
        cardDragon = null;
        cardTiger.SelfDestruction();
        cardTiger = null;

        if (callbackManager != null && callbackManager.onEndShowResult != null)
        {
            callbackManager.onEndShowResult();
        }

        _resultData = null;
        dragonTigerCasinoData.processResultData.RemoveAt(0);

        SetBetAgain();
    }