示例#1
0
 public void RefreshUIPanelListHistory()
 {
     if (AnimalRacing_GamePlay_Manager.instance.animalRacingData == null)
     {
         Debug.LogError(">>> animalRacingData is NULL");
         return;
     }
     if (myCurrentState != State.Show)
     {
         Debug.LogError(">>> Không ở trong trang đặt cược nên ko RefreshUIPanelCurrentScore");
         return;
     }
     if (AnimalRacing_GamePlay_Manager.instance.animalRacingData.listHistoryData != null)
     {
         betHistoryController.ResetData();
         for (int i = 0; i < AnimalRacing_GamePlay_Manager.instance.animalRacingData.listHistoryData.Count; i++)
         {
             AnimalRacingData.HistoryData _tmpHistory = AnimalRacing_GamePlay_Manager.instance.animalRacingData.listHistoryData[i];
             betHistoryController.SetDataHistory(_tmpHistory.animalType, _tmpHistory.score, i);
         }
     }
 }
    ///<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));
    }