From 505eff9fbd3d2b90c675a9297e26209386ca29aa Mon Sep 17 00:00:00 2001 From: chenxin <chenxin6991@163.com> Date: Thu, 03 Dec 2020 20:50:33 +0800 Subject: [PATCH] Merge branch 'master' of http://172.16.1.52:8090/r/GemBattle into master --- Assets/Scripts/UI/FinalPanel/FinalPanel.cs | 276 ++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 180 insertions(+), 96 deletions(-) diff --git a/Assets/Scripts/UI/FinalPanel/FinalPanel.cs b/Assets/Scripts/UI/FinalPanel/FinalPanel.cs index f68378d..aae1a65 100644 --- a/Assets/Scripts/UI/FinalPanel/FinalPanel.cs +++ b/Assets/Scripts/UI/FinalPanel/FinalPanel.cs @@ -9,23 +9,17 @@ using KTGMGemClient; using DG.Tweening; using System; +using System.Linq; public class FinalPanel : MonoBehaviour, IEnhancedScrollerDelegate { + //无限滚动相关 private EnhancedScroller scroller; - private SmallList<FinalPanelItemData> _data; - //private List<FinalPanelItemData> _data; public EnhancedScrollerCellView cellViewPrefab; - [SerializeField] - 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; private string endlessGameScene = "Endless2D"; - private string loadingScene = "LoadingScene"; - Button closeBtn; // Start is called before the first frame update void Start() { @@ -38,6 +32,7 @@ }); closeBtn.interactable = false; } + Button closeBtn; Text waveText; GameObject image_HScore; Text scoreText; @@ -45,8 +40,10 @@ bool isNewH = false; int hScore; CanvasGroup scrollerCanvasGroup; + CanvasGroup itemCanvasGroup; Action playEffectAC = null; + /// <summary> /// 设置播放胜利特效 @@ -57,6 +54,18 @@ playEffectAC = ac; } + string _waveInfo; + int _myScore; + FinalHttp finalHttp; + string playerNickName; + int _limit; + int _limitUp; + + FinalPanelItem itemFirst;//第一 + FinalPanelItem itemSecond;//第二 + FinalPanelItem itemThird;//第三 + Text txt_Name, txt_Wave; + TextMeshProUGUI txt_HScore, txt_Index; /// <summary> /// 入口函数 /// </summary> @@ -64,9 +73,15 @@ /// <param name="myScore">789220</param> public void SetData(string waveInfo, int myScore) { + _waveInfo = waveInfo; + _myScore = myScore; + hScore = PlayerPrefs.GetInt("GemBattleHScore"); - //scrollerCanvasGroup = transform.Find("Scroll View").GetComponent<CanvasGroup>(); scrollerCanvasGroup = transform.Find("Scroller").GetComponent<CanvasGroup>(); + scrollerCanvasGroup.alpha = 0; + itemCanvasGroup = transform.Find("ItemPanel").GetComponent<CanvasGroup>(); + itemCanvasGroup.alpha = 0; + if (myScore > hScore) { PlayerPrefs.SetInt("GemBattleHScore", myScore); @@ -74,9 +89,16 @@ isNewH = true; } + txt_Name = transform.Find("Image_HScore/Text_Name").GetComponent<Text>(); + txt_Wave = transform.Find("Image_HScore/Text_Wave").GetComponent<Text>(); + txt_HScore = transform.Find("Image_HScore/Text_HScore").GetComponent<TextMeshProUGUI>(); + txt_Index = transform.Find("Image_HScore/Text_Index").GetComponent<TextMeshProUGUI>(); + + transform.Find("Image_HScore/Text_HScore").GetComponent<TextMeshProUGUI>().text = hScore.ToString(); image_HScore = transform.Find("Image_HScore").gameObject; image_HScore.SetActive(false); + waveText = transform.Find("Text_Wave").GetComponent<Text>(); scoreText = transform.Find("Text_Score").GetComponent<Text>(); @@ -87,10 +109,67 @@ image_NewRecord = transform.Find("Image_NewRecord").gameObject; image_NewRecord.SetActive(false); - LoadLargeData(hScore); - Transform ts = transform.Find("Images"); + finalHttp = GetComponent<FinalHttp>(); + _limit = 100; + _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>(); + + //PlayerPrefs.DeleteKey("GemBattlePlayerNickName"); + + playerNickName = PlayerPrefs.GetString("GemBattlePlayerNickName"); + if (playerNickName == "") + { + GameObject go = Instantiate(Resources.Load<GameObject>("UI/Final/InputNamePanel"), transform); + go.GetComponent<InputNamePanel>().Init(LoadName); + } + else + { + StartHttp(); + } + + } + + private void LoadName(string nickName) + { + playerNickName = nickName; + PlayerPrefs.SetString("GemBattlePlayerNickName", playerNickName); + StartHttp(); + } + + private void StartHttp() + { + finalHttp.SendPost(playerNickName, _myScore, 1, _waveInfo); + } + + private void GetHttpData(List<HttpGetInfo> allHttpGetInfoLis, int myrank) + { + scroller = transform.Find("Scroller").GetComponent<EnhancedScroller>(); + scroller.Delegate = this; + + RefreshHttpData(allHttpGetInfoLis, myrank); + + txt_Name.text = playerNickName; + txt_HScore.text = _myScore.ToString(); + txt_Wave.text = _waveInfo; + if (myrank > 3000) + { + txt_Index.text = "3000+"; + } + else + { + txt_Index.text = myrank.ToString(); + } + + PlayDoTween(); + } + + private void PlayDoTween() + { Sequence agentTweenSeq = DOTween.Sequence(); //先出现 Image tsTiele = transform.Find("Image_Tiele").GetComponent<Image>(); @@ -100,7 +179,7 @@ Image Image1 = transform.Find("Image1").GetComponent<Image>(); agentTweenSeq.Append(Image1.transform.DOScale(Vector3.one, 0.2f));//变化图片大小 agentTweenSeq.Join(Image1.DOFade(1, 0.2f)); - agentTweenSeq.Join(waveText.DOText(waveInfo, 0.2f)); + agentTweenSeq.Join(waveText.DOText(_waveInfo, 0.2f)); Image Image2 = transform.Find("Image2").GetComponent<Image>(); agentTweenSeq.Append(Image2.transform.DOScale(Vector3.one, 0.2f));//变化图片大小 @@ -115,7 +194,7 @@ { var temp = Math.Floor(value); scoreText.text = temp + ""; - }, 0, myScore, 1.0f)); + }, 0, _myScore, 1.0f)); tsLight = transform.Find("ImageLight"); Image ImageLight = tsLight.GetComponent<Image>(); @@ -147,9 +226,8 @@ protected void StartLoadLargeData() { scoreText.gameObject.SetActive(true); - scrollerCanvasGroup.alpha = 1; - //StartCoroutine(PlayerItemDoTween()); + StartCoroutine(PlayerItemDoTween()); } /// <summary> @@ -158,25 +236,11 @@ /// <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); - // } - for (int i = 0; i < 8; i++) - { - allItemLis[i].PlayDoTween(0.1f); - yield return new WaitForSeconds(0.07f); - } + itemCanvasGroup.alpha = 1; + image_HScore.SetActive(true); yield break; @@ -209,65 +273,6 @@ { isRotate = true; offect = 0; - //Transform ImageLight = transform.Find("ImageLight"); - //ImageLight.DORotate(new Vector3(0, 180, 0), 1.0f).SetLoops(-1,LoopType.Incremental); - } - - List<FinalPanelItem> allItemLis;//新生成的排行榜 - /// <summary> - /// 生成假排行榜 - /// </summary> - /// <param name="hScore">自身分数</param> - private void LoadLargeData(int hScore) - { - scroller = transform.Find("Scroller").GetComponent<EnhancedScroller>(); - scroller.Delegate = this; - _data = new SmallList<FinalPanelItemData>(); - - //Transform content = transform.Find("Scroll View/Viewport/Content"); - //_data = new List<FinalPanelItemData>(); - FinalPanelItemData data; - int score = 101; - //GameObject go; - //FinalPanelItem tmpData; - //allItemLis = new List<FinalPanelItem>(); - for (var i = 0; i < 100; i++) - { - //go = Instantiate(cellViewPrefab.gameObject, content); - //tmpData = go.GetComponent<FinalPanelItem>(); - //allItemLis.Add(tmpData); - data = new FinalPanelItemData(); - data.score = score - i; - data.index = i + 1; - data.playerName = "游客" + i.ToString(); - data.spriteIcon = null; - data.spriteBackGround = rank_di_03; - _data.Add(data); - } - - _data[0].playerName = "自己"; - _data[0].score = hScore; - _data[0].spriteIcon = rank_icon_0; - _data[0].spriteBackGround = rank_di_0; - - _data[1].spriteIcon = rank_icon_1; - _data[1].spriteBackGround = rank_di_1; - - _data[2].spriteIcon = rank_icon_2; - _data[2].spriteBackGround = rank_di_2; - - // tell the scroller to reload now that we have the data - scroller.ReloadData(); - // for (int i = 0; i < allItemLis.Count; i++) - // { - // allItemLis[i].SetData(_data[i]); - // } - - // for (int i = 0; i < 8; i++) - // { - // allItemLis[i].SetPos(); - // } - } #region EnhancedScroller Handlers @@ -307,8 +312,92 @@ { FinalPanelItem cellView = scroller.GetCellView(cellViewPrefab) as FinalPanelItem; cellView.SetData(_data[dataIndex]); + + if (dataIndex == _data.Count - 2) + { + Debug.Log("是否可以刷新新列表了"); + + if (_limit >= 3000) + { + Debug.Log("数据下载量最大3000"); + } + else if (_limit >= _data.Count) + { + Debug.Log("当前服务器没有那么多数据"); + } + else + { + _limit += _limitUp; + Debug.Log("刷新新列表了,下载了 " + _limit + " 个数据:"); + finalHttp.Init(RefreshHttpData, _limit);//重置状态,设置回调和拉取的所有数据 + } + } return cellView; } + + private void RefreshHttpData(List<HttpGetInfo> allHttpGetInfoLis, int myrank) + { + _data = new SmallList<FinalPanelItemData>(); + FinalPanelItemData data; + + if (allHttpGetInfoLis.Count > 0) + { + if (allHttpGetInfoLis.Count >= 1) + { + data = new FinalPanelItemData(); + data.httpInfo = allHttpGetInfoLis[0]; + data.index = 1; + itemFirst.gameObject.SetActive(true); + itemFirst.SetData(data); + } + else + { + itemFirst.gameObject.SetActive(false); + itemSecond.gameObject.SetActive(false); + itemThird.gameObject.SetActive(false); + return; + } + if (allHttpGetInfoLis.Count >= 2) + { + data = new FinalPanelItemData(); + data.httpInfo = allHttpGetInfoLis[1]; + data.index = 2; + itemSecond.gameObject.SetActive(true); + itemSecond.SetData(data); + } + else + { + itemSecond.gameObject.SetActive(false); + itemThird.gameObject.SetActive(false); + return; + } + if (allHttpGetInfoLis.Count > 2) + { + data = new FinalPanelItemData(); + data.httpInfo = allHttpGetInfoLis[2]; + data.index = 3; + itemThird.gameObject.SetActive(true); + itemThird.SetData(data); + } + else + { + itemThird.gameObject.SetActive(false); + return; + } + if (allHttpGetInfoLis.Count > 3) + { + for (int i = 3; i < allHttpGetInfoLis.Count; i++) + { + data = new FinalPanelItemData(); + data.httpInfo = allHttpGetInfoLis[i]; + data.index = i + 1; + _data.Add(data); + } + scroller.ReloadData(); + } + } + } + #endregion @@ -316,12 +405,7 @@ public class FinalPanelItemData { - public string playerName; - public int score; + public HttpGetInfo httpInfo; public int index; - - public Sprite spriteIcon; - public Sprite spriteBackGround; - } -- Gitblit v1.9.1