From bff0eaf7be58fda86448d0e1c0c7bbb17cbb8369 Mon Sep 17 00:00:00 2001
From: wangguan <wangguan@kt007.com>
Date: Thu, 12 Nov 2020 16:25:39 +0800
Subject: [PATCH] 修改排行榜

---
 Assets/Scripts/UI/FinalPanel/FinalPanel.cs |  120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 111 insertions(+), 9 deletions(-)

diff --git a/Assets/Scripts/UI/FinalPanel/FinalPanel.cs b/Assets/Scripts/UI/FinalPanel/FinalPanel.cs
index 2c88ee8..38a5e49 100644
--- a/Assets/Scripts/UI/FinalPanel/FinalPanel.cs
+++ b/Assets/Scripts/UI/FinalPanel/FinalPanel.cs
@@ -1,10 +1,13 @@
-using UnityEngine.UI;
+using System.Collections;
+using UnityEngine.UI;
 using UnityEngine;
 using EnhancedUI;
 using EnhancedUI.EnhancedScroller;
 using TMPro;
 using UnityEngine.SceneManagement;
 using KTGMGemClient;
+using DG.Tweening;
+using System;
 
 public class FinalPanel : MonoBehaviour, IEnhancedScrollerDelegate
 {
@@ -17,7 +20,6 @@
     private Sprite rank_di_0, rank_di_1, rank_di_2, rank_di_03;
     [SerializeField]
     private Sprite rank_icon_0, rank_icon_1, rank_icon_2;
-
 
     public string endlessGameScene = "Endless";
 
@@ -33,6 +35,24 @@
             SceneManager.LoadScene(loadingScene);
         });
     }
+    Text waveText;
+    GameObject image_HScore;
+    Text scoreText;
+    GameObject image_NewRecord;
+    bool isNewH = false;
+    int hScore;
+    CanvasGroup scrollerCanvasGroup;
+
+    Action playEffectAC = null;
+
+    /// <summary>
+    /// 设置播放胜利特效
+    /// </summary>
+    /// <param name="ac"></param>
+    public void SetPlayEffectAC(Action ac)
+    {
+        playEffectAC = ac;
+    }
 
     /// <summary>
     /// 入口函数
@@ -41,26 +61,108 @@
     /// <param name="myScore">789220</param>
     public void SetData(string waveInfo, int myScore)
     {
-        transform.Find("Text_Wave").GetComponent<Text>().text = waveInfo;
-        int hScore = PlayerPrefs.GetInt("GemBattleHScore");
+        hScore = PlayerPrefs.GetInt("GemBattleHScore");
+        scrollerCanvasGroup = transform.Find("Scroller").GetComponent<CanvasGroup>();
         if (myScore > hScore)
         {
             PlayerPrefs.SetInt("GemBattleHScore", myScore);
             hScore = myScore;
+            isNewH = true;
         }
 
-        transform.Find("Text_Score").GetComponent<Text>().text = myScore.ToString();
-        transform.Find("Text_HScore").GetComponent<TextMeshProUGUI>().text = hScore.ToString();
+        transform.Find("Image_HScore/Text_HScore").GetComponent<TextMeshProUGUI>().text = hScore.ToString();
+        image_HScore = transform.Find("Image_HScore").gameObject;
+        image_HScore.SetActive(false);
 
-        scroller = transform.Find("Scroller").GetComponent<EnhancedScroller>();
+        waveText = transform.Find("Text_Wave").GetComponent<Text>();
+        scoreText = transform.Find("Text_Score").GetComponent<Text>();
+        waveText.gameObject.SetActive(false);
+        scoreText.gameObject.SetActive(false);
 
-        scroller.Delegate = this;
+        image_NewRecord = transform.Find("Image_NewRecord").gameObject;
+        image_NewRecord.SetActive(false);
 
-        LoadLargeData(hScore);
+        Transform ts = transform.Find("Images");
+
+        Sequence agentTweenSeq = DOTween.Sequence();
+
+        agentTweenSeq.Append(ts.DOScale(Vector3.one, 0.2f));//变化图片大小
+
+        agentTweenSeq.Append(ts.DOScale(new Vector3(1.7f, 1.7f, 1.7f), 0.2f));//变化图片大小
+        agentTweenSeq.Append(ts.DOScale(Vector3.one, 0.2f));//变化图片大小
+        agentTweenSeq.Append(ts.DOScale(new Vector3(1.2f, 1.2f, 1.2f), 0.2f));//变化图片大小
+        agentTweenSeq.Append(ts.DOScale(Vector3.one, 0.2f));//变化图片大小
+
+        agentTweenSeq.AppendCallback(StartLoadLargeData);
+        agentTweenSeq.Append(DOTween.To(delegate (float value)
+        {
+            var temp = Math.Floor(value);
+            scoreText.text = temp + "";
+        }, 0, myScore, 3.0f));
+
+        agentTweenSeq.AppendCallback(TextDoTweenFinish);
+        agentTweenSeq.Append(waveText.DOText(waveInfo, 0.2f));
     }
 
+    /// <summary>
+    /// 开始展示排行榜
+    /// </summary>
+    protected void StartLoadLargeData()
+    {
+        scoreText.gameObject.SetActive(true);
+        LoadLargeData(hScore);
+        StartCoroutine(PlayerItemDoTween());
+    }
+
+    /// <summary>
+    /// 播放排行榜动效
+    /// </summary>
+    /// <returns></returns>
+    IEnumerator PlayerItemDoTween()
+    {
+        yield return 1f;
+        FinalPanelItem[] allItems = transform.Find("Scroller/Container").GetComponentsInChildren<FinalPanelItem>();
+        for (int i = 0; i < allItems.Length; i++)
+        {
+            allItems[i].SetPos();
+        }
+        yield return new WaitForEndOfFrame();
+        scrollerCanvasGroup.alpha = 1;
+        for (int i = 0; i < allItems.Length; i++)
+        {
+            allItems[i].PlayDoTween(0.1f);
+            yield return new WaitForSeconds(0.1f);
+        }
+        image_HScore.SetActive(true);
+
+        yield break;
+    }
+
+    /// <summary>
+    /// 文字显示结束,显示波次和是否最高记录
+    /// </summary>
+    protected void TextDoTweenFinish()
+    {
+        waveText.gameObject.SetActive(true);
+        if (isNewH)
+        {
+            image_NewRecord.SetActive(true);
+        }
+
+        if (playEffectAC != null)
+        {
+            playEffectAC();
+        }
+    }
+
+    /// <summary>
+    /// 生成假排行榜
+    /// </summary>
+    /// <param name="hScore">自身分数</param>
     private void LoadLargeData(int hScore)
     {
+        scroller = transform.Find("Scroller").GetComponent<EnhancedScroller>();
+        scroller.Delegate = this;
         _data = new SmallList<FinalPanelItemData>();
         FinalPanelItemData data;
         int score = 101;

--
Gitblit v1.9.1