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