Beispiel #1
0
    void AddNewAchievementDetail(IMiniGameInfo.Type _gameType)
    {
        if (listAchievementDetail == null)
        {
            listAchievementDetail = new List <AchievementDetail>();
        }
        AchievementDetail _achievementDetail = new AchievementDetail(_gameType);

        listAchievementDetail.Add(_achievementDetail);
    }
Beispiel #2
0
    public void InitListOtherUserDataInGame(MessageReceiving _mess)
    {
        listOtherPlayerData = new List <UserDataInGame>();
        UserDataInGame _usedata   = null;
        sbyte          _maxViewer = _mess.readByte();

        for (int i = 0; i < (int)_maxViewer; i++)
        {
            sbyte _caseCheck = _mess.readByte(); //(nếu giá trị -1 thì không đọc data dưới --> tiếp tục vòng for)
            if (_caseCheck >= 0)
            {
                short _sessionId = _mess.readShort();
                _usedata = new UserDataInGame(_mess, _sessionId, (sbyte)i);
                BOL_ShowPlayer_Manager.instance.InitUserInroom(_usedata);
                if (_usedata.sessionId != DataManager.instance.userData.sessionId)
                {
                    listOtherPlayerData.Add(_usedata);
                }
                else
                {
                    DataManager.instance.userData.CastToUserDataInGame().index = (sbyte)i;
                    AchievementDetail _achievementDetail = DataManager.instance.achievementData.GetAchievementDetail(IMiniGameInfo.Type.BattleOfLegend);
                    if (_achievementDetail != null)
                    {
                        _achievementDetail.countWin  = _usedata.win;
                        _achievementDetail.countDraw = _usedata.tie;
                        _achievementDetail.countLose = _usedata.lose;
                        // Debug.Log(_usedata.win + " - " + _usedata.tie + " - " + _usedata.lose);
                    }
                    else
                    {
                        Debug.LogError(">>> _achievementDetail is null");
                    }
                }
            }
            else
            {
                _usedata = new UserDataInGame();
                listOtherPlayerData.Add(_usedata);
            }
            //Debug.LogError(_usedata.sessionId + " - " + DataManager.instance.userData.sessionId);
        }

        sbyte numberChairs = _mess.readByte();

        for (int i = 0; i < numberChairs; i++)
        {
            sbyte checkCase = _mess.readByte();
            if (checkCase >= 0)
            {
                short sessionIds = _mess.readShort();
            }
        }
    }
Beispiel #3
0
        public static SerializeResult Serialize()
        {
            NavigatorHandler.Serialize();
            AchievementHandler.Serialize();

            try
            {
                CharacterIgnores = new Dictionary <int, CharacterIgnore>();

                using (var Adapter = new DatabaseClient("SELECT * FROM character_ignores"))
                {
                    var Table = Adapter.GetTable();

                    foreach (DataRow Row in Table.Rows)
                    {
                        var Item = new CharacterIgnore(Row);

                        CharacterIgnores.Add(Item.Id, Item);
                    }
                }

                CharacterAchievements = new Dictionary <int, CharacterAchievement>();

                using (var Adapter = new DatabaseClient("SELECT * FROM character_achievements"))
                {
                    var Table = Adapter.GetTable();

                    foreach (DataRow Row in Table.Rows)
                    {
                        var Item = new CharacterAchievement(Row);

                        CharacterAchievements.Add(Item.Id, Item);
                    }
                }

                AchievementDetails = new Dictionary <int, AchievementDetail>();

                using (var Adapter = new DatabaseClient("SELECT * FROM achievements_details"))
                {
                    var Table = Adapter.GetTable();

                    foreach (DataRow Row in Table.Rows)
                    {
                        var Item = new AchievementDetail(Row);

                        AchievementDetails.Add(Item.Id, Item);
                    }
                }
            }
            catch { return(SerializeResult.Broken); }

            return(SerializeResult.Finished);
        }
Beispiel #4
0
    public void InitData(AchievementDetail _achievementData)
    {
        achievementData = _achievementData;
        var _obj = achievementData.myGameInfo.gameAvatar.Load();

        if (_obj != null)
        {
            iconGame.sprite = (Sprite)_obj;
        }
        txtNameGame.text  = achievementData.myGameInfo.myName;
        txtCountWin.text  = achievementData.countWin.ToString();
        txtCountDraw.text = achievementData.countDraw.ToString();
        txtCountLose.text = achievementData.countLose.ToString();
    }
    public void InitListOtherUserDataInGame(MessageReceiving _mess)
    {
        listGlobalPlayerData      = new List <UserDataInGame>();
        listSessionIdGlobalPlayer = new List <short>();
        UserDataInGame _userdata  = null;
        sbyte          _maxViewer = _mess.readByte();

        for (int i = 0; i < (int)_maxViewer; i++)
        {
            sbyte _caseCheck = _mess.readByte();             //(nếu giá trị -1 thì không đọc data dưới --> tiếp tục vòng for)
            if (_caseCheck != -1)
            {
                short _sessionId = _mess.readShort();
                _userdata = new UserDataInGame(_mess, _sessionId, (sbyte)i);
                if (CheckIfIsMe(_userdata.sessionId))
                {
                    int _countWin  = _userdata.win;
                    int _countTie  = _userdata.tie;
                    int _countLose = _userdata.lose;
                    _userdata       = DataManager.instance.userData.CastToUserDataInGame();
                    _userdata.index = (sbyte)i;
                    _userdata.win   = _countWin;
                    _userdata.tie   = _countTie;
                    _userdata.lose  = _countLose;
                    AchievementDetail _achievementDetail = DataManager.instance.achievementData.GetAchievementDetail(IMiniGameInfo.Type.Uno);
                    if (_achievementDetail != null)
                    {
                        _achievementDetail.countWin  = _userdata.win;
                        _achievementDetail.countDraw = _userdata.tie;
                        _achievementDetail.countLose = _userdata.lose;
                        // Debug.Log(_usedata.win + " - " + _usedata.tie + " - " + _usedata.lose);
                    }
                    else
                    {
                        Debug.LogError(">>> _achievementDetail is null");
                    }
                }
                listGlobalPlayerData.Add(_userdata);
                listSessionIdGlobalPlayer.Add(_sessionId);
            }
            else
            {
                _userdata = new UserDataInGame();
                listGlobalPlayerData.Add(_userdata);
                listSessionIdGlobalPlayer.Add(-1);
            }
            // Debug.LogError(_usedata.sessionId + " - " + DataManager.instance.userData.sessionId);
        }
    }
Beispiel #6
0
 public JsonResult UpdateMemberAchievement(int fid, int fach, string fdate)
 {
     using (CGPEntities ctx = new CGPEntities())
     {
         try
         {
             AchievementDetail a = new AchievementDetail();
             a.MemberID      = fid;
             a.AchievementID = fach;
             a.DateIncurred  = DateTime.ParseExact(fdate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
             a.TreeID        = CurrentContext.GetCurrentTree();
             ctx.AchievementDetails.Add(a);
             ctx.SaveChanges();
             return(Json("Cập Nhật Thành Công !", JsonRequestBehavior.AllowGet));
         }
         catch (Exception ex)
         {
             return(Json(ex.Message, JsonRequestBehavior.AllowGet));
         }
     }
 }
    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();
    }
    IEnumerator DoActionRun(bool _connectFirst, System.Action _onFinished = null)
    {
        yield return(null);

        panelLoading.SetActive(true);

        InitAllCallback();

        actionRunProcessPlaying = DoActionRunProcessPlaying();
        StartCoroutine(actionRunProcessPlaying);

        actionRunProcessNonPlaying = DoActionRunProcessNonPlaying();
        StartCoroutine(actionRunProcessNonPlaying);

        actionCheckFocusIconGetGold = DoActionCheckFocusIconGetGold();
        StartCoroutine(actionCheckFocusIconGetGold);

        NetworkGlobal.instance.SetProcessRealTime(CMD_REALTIME.S_MINIGAME_LONGHO_GET_GAMEINFO, (_mess) => {
            dragonTigerCasinoData.InitDataWhenGetTableInfo(_mess);
            if (_mess.avaiable() > 0)
            {
                                #if TEST
                Debug.Log(">>> Chua doc het CMD : " + _mess.getCMDName());
                                #endif
            }

            dragonTigerCasinoData.CheckListHistoryAgain();

            AchievementDetail _achievementDetail = DataManager.instance.achievementData.GetAchievementDetail(IMiniGameInfo.Type.DragonTigerCasino);
            if (_achievementDetail != null)
            {
                _achievementDetail.countWin  = dragonTigerCasinoData.winAchievement;
                _achievementDetail.countDraw = dragonTigerCasinoData.tieAchievement;
                _achievementDetail.countLose = dragonTigerCasinoData.loseAchievement;
                // Debug.Log(dragonTigerCasinoData.winAchievement + " - " + dragonTigerCasinoData.tieAchievement + " - " + dragonTigerCasinoData.loseAchievement);
            }

            RefreshUITableBet(true);

            RegisterActionUpdateResultGame();
            RegisterActionMeAddBet();
            RegisterActionUpdateTableBet();
            RegisterActionPlayerChat();
            RegisterActionPlayerAddGold();
            RegisterActionSetParentInfo();
            RegisterActionAlertUpdateServer();
        });
        if (_connectFirst)
        {
            GlobalRealTimeSendingAPI.SendMessageJoinToMiniGame(DataManager.instance.miniGameData.currentSubGameDetail.myInfo);
        }
        NetworkGlobal.instance.instanceRealTime.ResumeReceiveMessage();
        yield return(new WaitUntil(() => dragonTigerCasinoData != null && dragonTigerCasinoData.hasLoadGameInfo));

        panelLoading.SetActive(false);

        actionDealCardFirstGame = DoActionDealCardAtFirst();
        StartCoroutine(actionDealCardFirstGame);

        MyAudioManager.instance.PlayMusic(myAudioInfo.bgm);

        onPressBack = () => {
            if (SettingScreenController.instance.currentState == UIHomeScreenController.State.Show)
            {
                MyAudioManager.instance.PlaySfx(GameInformation.instance.globalAudioInfo.sfx_Click);
                SettingScreenController.instance.Hide();
            }
            else
            {
                OnButtonSettingClicked();
            }
        };
        CoreGameManager.instance.RegisterNewCallbackPressBackKey(onPressBack);

        if (_onFinished != null)
        {
            _onFinished();
        }
    }
Beispiel #9
0
    IEnumerator DoActionShowResult()
    {
        if (currentGameState == GameState.ShowResult)
        {
            Debug.LogError("Đang show result rồi");
            yield break;
        }

        KoprokData.Koprok_Result_Data _resultData = koprokData.processResultData[0];

        currentGameState = GameState.ShowResult;

        // ---- Merge dữ liệu ---- //
        Koprok_GamePlay_Manager.IndexBet _slot1 = (Koprok_GamePlay_Manager.IndexBet)_resultData.dice[0];
        Koprok_GamePlay_Manager.IndexBet _slot2 = (Koprok_GamePlay_Manager.IndexBet)_resultData.dice[1];
        Koprok_GamePlay_Manager.IndexBet _slot3 = (Koprok_GamePlay_Manager.IndexBet)_resultData.dice[2];
        koprokData.listHistory.Insert(0, new KoprokData.Koprok_History_Data(_slot1, _slot2, _slot3));

        koprokData.CheckListHistoryAgain();
        koprokData.ResetTableBet();
        koprokData.nextTimeToShowResult    = _resultData.nextTimeToShowResult;
        DataManager.instance.userData.gold = _resultData.GOLD;
        DataManager.instance.userData.SetTotalBetInGameInfo(IMiniGameInfo.Type.Koprok, 0);

        if (_resultData.caseCheck == 1)
        {
            AchievementDetail _achievementDetail = DataManager.instance.achievementData.GetAchievementDetail(IMiniGameInfo.Type.Koprok);
            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();
        }

        List <Sprite> _listSpriteBetWin = new List <Sprite>();

        for (int i = 0; i < _resultData.dice.Count; i++)
        {
            _listSpriteBetWin.Add(spriteIconBet[(int)_resultData.dice[i]]);
        }
        diskShock.SetItemInfo(_listSpriteBetWin, true, true);

        SetUpShadowTable(null, true);
        yield return(StartCoroutine(diskShock.DoActionShowResult(myAudioInfo.sfx_DiceMove)));

        yield return(StartCoroutine(DoActionHighlightIndexBet(_resultData.dice)));

        if (_resultData.betUnit > 0)
        {
            StartCoroutine(MyConstant.DoActionShowPopupWinGold(panelBonusGoldPrefab, effectPoolManager, myCanvas.transform
                                                               , showEffPanelGoldBonusEffPlaceHolder.position, 1.1f, _resultData.betUnit
                                                               , () => {
                panelUserInGame.RefreshGoldInfo();
            }));
            List <IndexBet> _myBetWin = new List <IndexBet>();
            for (int i = 0; i < _resultData.dice.Count; i++)
            {
                if (koprokData.myIndexBet.Contains(_resultData.dice[i]))
                {
                    _myBetWin.Add(_resultData.dice[i]);
                }
            }
            yield return(StartCoroutine(DoActionShowEffWinGoldAtIndex(_myBetWin, (Vector2)iconGoldHolder.position)));
        }

        yield return(StartCoroutine(diskShock.DoActionShockAgainAndReset(myAudioInfo.sfx_DiceMove, myAudioInfo.sfx_DiceShake)));

        SetUpShadowTable(_resultData.dice, false);

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

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

        SetBetAgain();
    }
    ///<summary>
    /// DoActionShowResult: Show màn hình cho thú chạy
    ///</summary>
    IEnumerator DoActionShowResultScreen()
    {
        if (currentState == State.ShowResult)
        {
            Debug.LogError("Đang show result rồi");
            yield break;
        }

        currentState = State.ShowResult;

        bool _isFinished = false;

        shadowChangeScreen.gameObject.SetActive(true);
        Color _c = shadowChangeScreen.color;

        _c.a = 0f;
        shadowChangeScreen.color = _c;
        LeanTween.alpha(shadowChangeScreen.rectTransform, 1f, 0.1f).setOnComplete(() => {
            _isFinished = true;
        });
        yield return(new WaitUntil(() => _isFinished));

        if (callbackManager != null && callbackManager.onStartShowResult != null)
        {
            callbackManager.onStartShowResult();
        }
        yield return(Yielders.EndOfFrame);

        betManager.Hide();
        resultManager.gameObject.SetActive(true);
        yield return(Yielders.EndOfFrame);

        resultManager.Show();

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

        _isFinished = false;
        LeanTween.alpha(shadowChangeScreen.rectTransform, 0f, 0.2f).setOnComplete(() => {
            shadowChangeScreen.gameObject.SetActive(false);
            _isFinished = true;
        });
        yield return(new WaitUntil(() => _isFinished));

        if (animalRacingData.currentResultData == null)
        {
            yield return(new WaitUntil(() => animalRacingData.currentResultData != null));
        }

        // ---- Merge dữ liệu ---- //
        #if TEST
        Debug.Log(">>> AnimalIndexWin: " + animalRacingData.currentResultData.animalWin);
        #endif
        if (animalRacingData.currentResultData.valueCheck == 1)
        {
            for (int i = 0; i < animalRacingData.currentResultData.listGoldUpdate.Count; i++)
            {
                if (animalRacingData.currentResultData.listGoldUpdate[i].caseCheck == 1)
                {
                    // --- Cập nhật số tiền hiện có cho chính mình --- //
                    if (animalRacingData.currentResultData.listGoldUpdate[i].sessionId == DataManager.instance.userData.sessionId)
                    {
                        DataManager.instance.userData.gold = animalRacingData.currentResultData.listGoldUpdate[i].GOLD;
                        AchievementDetail _achievementDetail = DataManager.instance.achievementData.GetAchievementDetail(IMiniGameInfo.Type.AnimalRacing);
                        if (_achievementDetail != null)
                        {
                            if (animalRacingData.currentResultData.listGoldUpdate[i].goldProcess > 0)
                            {
                                _achievementDetail.countWin = animalRacingData.currentResultData.listGoldUpdate[i].achievement;
                            }
                            else if (animalRacingData.currentResultData.listGoldUpdate[i].goldProcess < 0)
                            {
                                _achievementDetail.countLose = animalRacingData.currentResultData.listGoldUpdate[i].achievement;
                            }
                            else
                            {
                                _achievementDetail.countDraw = animalRacingData.currentResultData.listGoldUpdate[i].achievement;
                            }
                        }
                        else
                        {
                            Debug.LogError(">>> _achievementDetail is null");
                        }
                        continue;
                    }
                    for (int j = 0; j < animalRacingData.listOtherPlayerData.Count; j++)
                    {
                        if (animalRacingData.listOtherPlayerData[j].IsEqual(animalRacingData.currentResultData.listGoldUpdate[i].sessionId))
                        {
                            animalRacingData.listOtherPlayerData[j].gold = animalRacingData.currentResultData.listGoldUpdate[i].GOLD;
                            if (animalRacingData.currentResultData.listGoldUpdate[i].goldProcess > 0)
                            {
                                animalRacingData.listOtherPlayerData[j].win = animalRacingData.currentResultData.listGoldUpdate[i].achievement;
                            }
                            else if (animalRacingData.currentResultData.listGoldUpdate[i].goldProcess < 0)
                            {
                                animalRacingData.listOtherPlayerData[j].lose = animalRacingData.currentResultData.listGoldUpdate[i].achievement;
                            }
                            else
                            {
                                animalRacingData.listOtherPlayerData[j].tie = animalRacingData.currentResultData.listGoldUpdate[i].achievement;
                            }
                            break;
                        }
                    }
                }
                else if (animalRacingData.currentResultData.listGoldUpdate[i].caseCheck == -88)
                {
                    if (animalRacingData.currentResultData.listGoldUpdate[i].sessionId == DataManager.instance.userData.sessionId)
                    {
                        DataManager.instance.userData.gold = animalRacingData.currentResultData.listGoldUpdate[i].GOLD;
                        continue;
                    }
                    for (int j = 0; j < animalRacingData.listOtherPlayerData.Count; j++)
                    {
                        if (animalRacingData.listOtherPlayerData[j].IsEqual(animalRacingData.currentResultData.listGoldUpdate[i].sessionId))
                        {
                            animalRacingData.listOtherPlayerData[j].gold = animalRacingData.currentResultData.listGoldUpdate[i].GOLD;
                            break;
                        }
                    }
                }
            }
        }
        else
        {
            if (animalRacingData.currentResultData.valueCheck == -99)
            {
                PopupManager.Instance.CreatePopupMessage(MyLocalize.GetString(MyLocalize.kError)
                                                         , MyLocalize.GetString(MyLocalize.kConnectionError)
                                                         , string.Empty
                                                         , MyLocalize.GetString(MyLocalize.kOk));
            }
        }

        // --- Cập nhật lại history và tỉ lệ cược mới --- //
        AnimalRacingData.HistoryData _tmpHistoryData = new AnimalRacingData.HistoryData();
        _tmpHistoryData.animalType = animalRacingData.currentResultData.animalWin;
        _tmpHistoryData.score      = animalRacingData.listCurrentScore[(int)_tmpHistoryData.animalType];
        animalRacingData.listHistoryData.Insert(0, _tmpHistoryData);
        animalRacingData.CheckListHistoryAgain();

        animalRacingData.listCurrentScore = animalRacingData.currentResultData.newListCurrentScore;
        animalRacingData.listGlobalBets   = animalRacingData.currentResultData.newListGlobalBet;
        animalRacingData.listMyBets       = animalRacingData.currentResultData.newListMyBet;
        // ----------------------------------------------- //

        callbackManager.onStartSetUpAfterShowResult = betManager.SetUpAfterShowResult;
        callbackManager.onEndSetUpAfterShowResult   = () => {
            animalRacingData.currentResultData = null;
            currentState = State.Bet;
        };
        // ----------------------- //

        yield return(null);

// #if TEST
//         Debug.Log(">>> ShowResultScreen");
// #endif

        yield return(resultManager.StartRun());

        _isFinished = false;
        shadowChangeScreen.gameObject.SetActive(true);
        _c   = shadowChangeScreen.color;
        _c.a = 0f;
        shadowChangeScreen.color = _c;
        LeanTween.alpha(shadowChangeScreen.rectTransform, 1f, 0.1f).setOnComplete(() => {
            resultManager.Hide();
            animalRacingData.nextTimeToShowResult = animalRacingData.currentResultData.nextTimeToShowResult;
            if (callbackManager != null &&
                callbackManager.onEndShowResult != null)
            {
                callbackManager.onEndShowResult();
            }
            ShowBetScreenAgain();

            LeanTween.alpha(shadowChangeScreen.rectTransform, 0f, 0.1f).setOnComplete(() => {
                shadowChangeScreen.gameObject.SetActive(false);
                _isFinished = true;
            });
        });
        yield return(new WaitUntil(() => _isFinished));
    }