From b01151f932f8faa041a8facfb03059147170f40c Mon Sep 17 00:00:00 2001
From: liuzhiwei <liuzhiwei@qq.com>
Date: Wed, 09 Dec 2020 10:16:24 +0800
Subject: [PATCH] Merge branch 'master' of http://172.16.1.52:8090/r/GemBattle into master

---
 Assets/Scripts/UI/FinalPanel/FinalPanel.cs |  296 ++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 174 insertions(+), 122 deletions(-)

diff --git a/Assets/Scripts/UI/FinalPanel/FinalPanel.cs b/Assets/Scripts/UI/FinalPanel/FinalPanel.cs
index a8edd17..2740514 100644
--- a/Assets/Scripts/UI/FinalPanel/FinalPanel.cs
+++ b/Assets/Scripts/UI/FinalPanel/FinalPanel.cs
@@ -26,6 +26,7 @@
         closeBtn = transform.Find("BackGround").GetComponent<Button>();
         closeBtn.onClick.AddListener(() =>
         {
+            goonText.DOKill();
             gameObject.SetActive(false);
             GameConfig.NextSceneName = endlessGameScene;
             SceneManager.LoadScene(loadingScene);
@@ -38,26 +39,19 @@
     Text scoreText;
     GameObject image_NewRecord;
     bool isNewH = false;
-    int hScore;
+    int hScore;//最高分
+    int tmpRank;//当前排名
+    int tmpRankUp;//排名上升了多少
     //string hwaveInfo;
 
     CanvasGroup scrollerCanvasGroup;
     CanvasGroup itemCanvasGroup;
 
-    Action playEffectAC = null;
-
-
-    /// <summary>
-    /// 设置播放胜利特效
-    /// </summary>
-    /// <param name="ac"></param>
-    public void SetPlayEffectAC(Action ac)
-    {
-        playEffectAC = ac;
-    }
+    ParticleSystem endPs;//最终特效
 
     string playerPrefs_HScore = "GemBattleHScore";
     //string playerPrefs_HWaveInfo = "GemBattleHWaveInfo";
+    string playerPrefs_HRank = "GemBattleHRank";
 
     string playerPrefs_NickName = "GemBattlePlayerNickName";
 
@@ -73,6 +67,12 @@
     FinalPanelItem itemThird;//第三
     Text txt_Name, txt_Wave;
     TextMeshProUGUI txt_HScore, txt_Index;
+
+    TextMeshProUGUI rankUpbj;
+    GameObject newPlayerImage;//新用户提示
+    GameObject httpCountDownPanel;
+    Text goonText;
+
     /// <summary>
     /// 入口函数
     /// </summary>
@@ -82,10 +82,13 @@
     {
         _waveInfo = waveInfo;
         _myScore = myScore;
+        isFirstStart = true;//首次启动下载到数据执行动效
         _data = new SmallList<FinalPanelItemData>();
         Debug.Log($"_myScore:{_myScore}  _waveInfo:{_waveInfo}");
 
         hScore = PlayerPrefs.GetInt(playerPrefs_HScore);
+        tmpRank = PlayerPrefs.GetInt(playerPrefs_HRank);
+        tmpRankUp = 0;
         //hwaveInfo = PlayerPrefs.GetString(playerPrefs_HWaveInfo);
         scrollerCanvasGroup = transform.Find("Scroller").GetComponent<CanvasGroup>();
         scrollerCanvasGroup.alpha = 0;
@@ -117,7 +120,7 @@
         scoreText.text = "";
         waveText.text = "";
         waveText.gameObject.SetActive(false);
-        scoreText.gameObject.SetActive(false);
+        //scoreText.gameObject.SetActive(false);
 
         image_NewRecord = transform.Find("Image_NewRecord").gameObject;
         image_NewRecord.SetActive(false);
@@ -127,15 +130,21 @@
         _limitUp = 100;
         finalHttp.Init(GetHttpData, _limit);//重置状态,设置回调和拉取的所有数据
 
-        itemFirst = transform.Find("ItemPanel/FinalPanelItemFirst").GetComponent<FinalPanelItem>();
-        itemSecond = transform.Find("ItemPanel/FinalPanelItemSecond").GetComponent<FinalPanelItem>();
-        itemThird = transform.Find("ItemPanel/FinalPanelItemThird").GetComponent<FinalPanelItem>();
+        itemFirst = transform.Find("ItemPanel/ItemMask/FinalPanelItemFirst").GetComponent<FinalPanelItem>();
+        itemSecond = transform.Find("ItemPanel/ItemMask/FinalPanelItemSecond").GetComponent<FinalPanelItem>();
+        itemThird = transform.Find("ItemPanel/ItemMask/FinalPanelItemThird").GetComponent<FinalPanelItem>();
 
         httpCountDownPanel = transform.Find("HttpCountDownPanel").gameObject;
-        countDownReplayBtn = transform.Find("HttpCountDownPanel/ReplayBtn").GetComponent<Button>();
-        countDownTxt = transform.Find("HttpCountDownPanel/WarningTxt").GetComponent<Text>();
         httpCountDownPanel.SetActive(false);
 
+        rankUpbj = transform.Find("Image_HScore/RankUp").GetComponent<TextMeshProUGUI>();
+        newPlayerImage = transform.Find("Image_HScore/NewPlayer").gameObject;
+        rankUpbj.gameObject.SetActive(false);
+
+
+        endPs = transform.Find("Effect_UI_JieSuanShengLi/03").GetComponent<ParticleSystem>();
+
+        goonText = transform.Find("Image_HScore/GoOnText").GetComponent<Text>();
         //PlayerPrefs.DeleteKey("GemBattlePlayerNickName");
 
         playerNickName = PlayerPrefs.GetString(playerPrefs_NickName);
@@ -146,6 +155,7 @@
         }
         else
         {
+            newPlayerImage.SetActive(false);
             StartHttp();
         }
 
@@ -155,96 +165,39 @@
     {
         playerNickName = nickName;
         PlayerPrefs.SetString(playerPrefs_NickName, playerNickName);
+
+        if (Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.WindowsPlayer)
+        {
+            //为了方便测试
+            GameConfig.Imei = playerNickName;
+            Debug.Log("这里是电脑版,直接设置Imei为昵称" + playerNickName);
+        }
+
         StartHttp();
     }
 
     private void StartHttp()
     {
-        //OpenHttpCountDown(true);
-
         Debug.Log($"_myScore:{_myScore}  _waveInfo:{_waveInfo}");
         finalHttp.SendPost(playerNickName, _myScore, 1, _waveInfo);
     }
 
-    #region 联网倒计时判断
-    bool isSending;
-    int sendCount;
-    GameObject httpCountDownPanel;
-    Button countDownReplayBtn;
-    Text countDownTxt;
-    private void OpenHttpCountDown(bool isOn)
-    {
-        if (isOn)
-        {
-            isSending = true;
-            sendCount = 0;
-            StartCoroutine("HttpCountDown");
-        }
-        else
-        {
-            isSending = false;
-            StopCoroutine("HttpCountDown");
-        }
-    }
-    IEnumerator HttpCountDown()
-    {
-        while (isSending)
-        {
-            yield return new WaitForSeconds(1.0f);
-            sendCount++;
-            Debug.Log($"等待了{sendCount}秒");
-            if (sendCount == 3)
-            {
-                if (!httpCountDownPanel.activeSelf) httpCountDownPanel.SetActive(true);
-                if (countDownReplayBtn.gameObject.activeSelf) countDownReplayBtn.gameObject.SetActive(false);
-            }
-            else if (sendCount > 10)
-            {
-                Debug.Log("等了10秒了,连接失败");
-                isSending = false;
-                countDownTxt.text = "等了10秒了,连接失败";
-                if (!countDownReplayBtn.gameObject.activeSelf) countDownReplayBtn.gameObject.SetActive(true);
-
-                countDownReplayBtn.onClick.AddListener(Close);
-                break;
-            }
-        }
-    }
-    #endregion
-
-
-    private void Close()
-    {
-        gameObject.SetActive(false);
-        GameConfig.NextSceneName = endlessGameScene;
-        SceneManager.LoadScene(loadingScene);
-    }
-
-    private void GetHttpData(List<HttpGetInfo> allHttpGetInfoLis, int myrank)
+    private void GetHttpData(List<HttpGetInfo> allHttpGetInfoLis, int myrank, HttpGetInfo mydataHttpInfo)
     {
         scroller = transform.Find("Scroller").GetComponent<EnhancedScroller>();
         scroller.Delegate = this;
+        playPSItem = new List<FinalPanelItem>();
+        RefreshHttpData(allHttpGetInfoLis, myrank, mydataHttpInfo);
 
-        RefreshHttpData(allHttpGetInfoLis, myrank);
-
-        if (allHttpGetInfoLis == null) return;
-
-        HttpGetInfo tmpData = allHttpGetInfoLis[myrank - 1];
-
-        txt_Name.text = tmpData.nickname;
-        txt_HScore.text = tmpData.score.ToString();
-        txt_Wave.text = tmpData.waveInfo;
-
-        if (myrank > 3000)
+        if (allHttpGetInfoLis != null)
         {
-            txt_Index.text = "3000+";
-        }
-        else
-        {
-            txt_Index.text = myrank.ToString();
+            txt_Name.text = mydataHttpInfo.nickname;
+            txt_HScore.text = mydataHttpInfo.score.ToString();
+            txt_Wave.text = mydataHttpInfo.waveInfo;
         }
 
         PlayDoTween();
+        isFirstStart = false;
     }
 
     private void PlayDoTween()
@@ -256,24 +209,30 @@
         agentTweenSeq.Join(tsTiele.DOFade(1, 0.3f));
 
         Image Image1 = transform.Find("Image1").GetComponent<Image>();
-        agentTweenSeq.Append(Image1.transform.DOScale(Vector3.one, 0.2f));//变化图片大小
-        agentTweenSeq.Join(Image1.DOFade(1, 0.2f));
+        float imageTime = 0.3f;
+        agentTweenSeq.Append(Image1.transform.DOScale(Vector3.one, imageTime).SetEase(Ease.InOutBack));//变化图片大小
+        agentTweenSeq.Join(Image1.DOFade(1, imageTime));
         agentTweenSeq.Join(waveText.DOText(_waveInfo, 0.2f));
 
         Image Image2 = transform.Find("Image2").GetComponent<Image>();
-        agentTweenSeq.Append(Image2.transform.DOScale(Vector3.one, 0.2f));//变化图片大小
-        agentTweenSeq.Join(Image2.DOFade(1, 0.2f));
-
-        agentTweenSeq.AppendCallback(StartLoadLargeData);
+        agentTweenSeq.Append(Image2.transform.DOScale(Vector3.one, imageTime).SetEase(Ease.InOutBack));//变化图片大小
+        agentTweenSeq.Join(Image2.DOFade(1, imageTime));
 
         Image Image3 = transform.Find("Image3").GetComponent<Image>();
-        agentTweenSeq.Append(Image3.transform.DOScale(Vector3.one, 0.2f));//变化图片大小
-        agentTweenSeq.Join(Image3.DOFade(1, 0.2f));
+
+        agentTweenSeq.Append(Image3.transform.DOScale(Vector3.one, imageTime).SetEase(Ease.InOutBack));//变化图片大小
+        agentTweenSeq.Join(Image3.DOFade(1, imageTime));
+        agentTweenSeq.AppendCallback(() =>
+       {
+           Debug.Log("开始播放声音");
+           AudioSourceManager.Ins.Play(AudioEnum.FinalScore);
+       });
         agentTweenSeq.Join(DOTween.To(delegate (float value)
         {
             var temp = Math.Floor(value);
             scoreText.text = temp + "";
-        }, 0, _myScore, 1.0f));
+        }, 0, _myScore, 1.71f));
+        agentTweenSeq.AppendCallback(StartLoadLargeData);
 
         tsLight = transform.Find("ImageLight");
         Image ImageLight = tsLight.GetComponent<Image>();
@@ -304,8 +263,6 @@
     /// </summary>
     protected void StartLoadLargeData()
     {
-        scoreText.gameObject.SetActive(true);
-
         StartCoroutine(PlayerItemDoTween());
     }
 
@@ -315,14 +272,36 @@
     /// <returns></returns>
     IEnumerator PlayerItemDoTween()
     {
-
         yield return new WaitForEndOfFrame();
-        scrollerCanvasGroup.alpha = 1;
-        itemCanvasGroup.alpha = 1;
+        if (_data.Count > 0)
+        {
+            scrollerCanvasGroup.alpha = 1;
+            Debug.Log("开始展示排行榜");
+        }
 
-        image_HScore.SetActive(true);
+        if (playPSItem.Count > 0)
+        {
+            itemCanvasGroup.alpha = 1;
+            float duration = 0.1f;
+            for (int i = 0; i < playPSItem.Count; i++)
+            {
+                playPSItem[i].PlayDoTween(duration);
+                yield return new WaitForSeconds(duration);
+            }
+            image_HScore.SetActive(true);
+            goonFade = true;
+            ShowGoOnText();
+        }
 
         yield break;
+    }
+
+    bool goonFade;
+    private void ShowGoOnText()
+    {
+        goonText.DOFade(goonFade ? 0 : 1, 0.8f).SetEase(Ease.InOutQuad).OnComplete(ShowGoOnText);
+        goonText.transform.DOScale(goonFade ? 0.9f : 1.1f, 0.8f);
+        goonFade = !goonFade;
     }
 
     /// <summary>
@@ -331,15 +310,34 @@
     protected void TextDoTweenFinish()
     {
         waveText.gameObject.SetActive(true);
+        if (_allHttpGetInfoLis == null)
+        {
+            httpCountDownPanel.SetActive(true);
+        }
         if (isNewH)
         {
             image_NewRecord.SetActive(true);
+
+            if (tmpRankUp > 0)
+            {
+                Debug.Log("排名上升了:" + tmpRankUp);
+                if (!rankUpbj.gameObject.activeSelf)
+                {
+                    rankUpbj.gameObject.SetActive(true);
+                    DOTween.To(delegate (float value)
+                        {
+                            var temp = Math.Floor(value);
+                            rankUpbj.text = temp + "";
+                        }, 0, tmpRankUp, 0.5f);
+                }
+            }
+            else
+            {
+                Debug.Log("排名下降了");
+            }
         }
 
-        if (playEffectAC != null)
-        {
-            playEffectAC();
-        }
+        endPs?.Play();
 
         closeBtn.interactable = true;
     }
@@ -350,6 +348,7 @@
     /// </summary>
     protected void RotateLight()
     {
+        Debug.Log("开始旋转");
         isRotate = true;
         offect = 0;
     }
@@ -391,16 +390,16 @@
     {
         FinalPanelItem cellView = scroller.GetCellView(cellViewPrefab) as FinalPanelItem;
         cellView.SetData(_data[dataIndex]);
-
+        //cellView.CheckRank(tmpRankUp);
         if (dataIndex == _data.Count - 2)
         {
-            Debug.Log("是否可以刷新新列表了");
+            Debug.Log($"是否可以刷新新列表了  _limit:{_limit}    _data.Count:{_data.Count}");
 
             if (_limit >= 3000)
             {
                 Debug.Log("数据下载量最大3000");
             }
-            else if (_limit >= _data.Count)
+            else if (_limit > _data.Count + 3)//从第三名开始无限滚动
             {
                 Debug.Log("当前服务器没有那么多数据");
             }
@@ -415,25 +414,44 @@
         return cellView;
     }
 
-    private void RefreshHttpData(List<HttpGetInfo> allHttpGetInfoLis, int myrank)
+    List<HttpGetInfo> _allHttpGetInfoLis;
+    List<FinalPanelItem> playPSItem;//特效list
+    bool isFirstStart;
+    private void RefreshHttpData(List<HttpGetInfo> allHttpGetInfoLis, int myrank, HttpGetInfo mydataHttpInfo)
     {
+        _allHttpGetInfoLis = allHttpGetInfoLis;
         if (allHttpGetInfoLis == null)
         {
-            httpCountDownPanel.SetActive(true);
-            countDownTxt.text = "获取排行榜失败";
-            countDownReplayBtn.onClick.AddListener(Close);
+            //httpCountDownPanel.SetActive(true);
             return;
         }
-
-        // if (isSending)
-        // {
-        //     OpenHttpCountDown(false);
-        // }
 
         FinalPanelItemData data;
 
         if (allHttpGetInfoLis.Count > 0)
         {
+            //排名发生了变化
+            if (tmpRank != myrank)
+            {
+                tmpRankUp = tmpRank - myrank;
+
+                tmpRank = myrank;
+                PlayerPrefs.SetInt(playerPrefs_HRank, tmpRank);
+            }
+            else
+            {
+
+            }
+
+            if (myrank > 3000)
+            {
+                txt_Index.text = "3000+";
+            }
+            else
+            {
+                txt_Index.text = myrank.ToString();
+            }
+
             if (allHttpGetInfoLis.Count >= 1)
             {
                 data = new FinalPanelItemData();
@@ -441,6 +459,12 @@
                 data.index = 1;
                 itemFirst.gameObject.SetActive(true);
                 itemFirst.SetData(data);
+                if (isFirstStart)
+                {
+                    itemFirst.SetPos();
+                    playPSItem.Add(itemFirst);
+                }
+                //itemFirst.CheckRank(tmpRankUp);
             }
             else
             {
@@ -456,6 +480,12 @@
                 data.index = 2;
                 itemSecond.gameObject.SetActive(true);
                 itemSecond.SetData(data);
+                if (isFirstStart)
+                {
+                    itemSecond.SetPos();
+                    playPSItem.Add(itemSecond);
+                }
+                //itemFirst.CheckRank(tmpRankUp);
             }
             else
             {
@@ -470,6 +500,12 @@
                 data.index = 3;
                 itemThird.gameObject.SetActive(true);
                 itemThird.SetData(data);
+                if (isFirstStart)
+                {
+                    itemThird.SetPos();
+                    playPSItem.Add(itemThird);
+                }
+                //itemFirst.CheckRank(tmpRankUp);
             }
             else
             {
@@ -478,6 +514,7 @@
             }
             if (allHttpGetInfoLis.Count > 3)
             {
+                _data.Clear();
                 for (int i = 3; i < allHttpGetInfoLis.Count; i++)
                 {
                     data = new FinalPanelItemData();
@@ -486,11 +523,26 @@
                     _data.Add(data);
                 }
                 scroller.ReloadData();
+
+                if (isFirstStart)
+                {
+                    Transform container = transform.Find("Scroller/Container");
+                    FinalPanelItem[] items = container.GetComponentsInChildren<FinalPanelItem>();
+                    for (int i = 0; i < items.Length; i++)
+                    {
+                        playPSItem.Add(items[i]);
+                        items[i].SetPos();
+                    }
+                }
+
             }
+
         }
     }
 
 
+
+
     #endregion
 
 }

--
Gitblit v1.9.1