From d2bc86161bf01b9ac01ba7b4b6ee7e341778c0c2 Mon Sep 17 00:00:00 2001 From: River Jiang <546213258@qq.com> Date: Wed, 28 Oct 2020 14:34:36 +0800 Subject: [PATCH] 充能进度动画平滑加强 --- Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs | 272 ++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 204 insertions(+), 68 deletions(-) diff --git a/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs b/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs index ca518d0..183e161 100644 --- a/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs +++ b/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs @@ -1,4 +1,5 @@ -using Core.Utilities; +using TowerDefense.Towers; +using Core.Utilities; using System; using TMPro; using UnityEngine; @@ -6,6 +7,8 @@ using MoreMountains.NiceVibrations; using TowerDefense.Level; using KTGMGemClient; +using TowerDefense.UI.HUD; +using System.Collections; /// <summary> /// 无尽模式用自己的EndlessUIStart @@ -44,9 +47,16 @@ private bool isPause; + public bool beginSkillStep = false; + // Start is called before the first frame update void Start() { + if (GA_SDK_Manager.Ins == null) + gameObject.AddComponent<GA_SDK_Manager>(); + GA_SDK_Manager.Ins.ArriveBattle();//埋点 + GA_SDK_Manager.Ins.Statistics(4);//埋点 + bVibrate = new bool[4]; bVibrate[0] = bVibrate[1] = bVibrate[2] = bVibrate[3] = false; @@ -63,26 +73,133 @@ //查询是否已经做过了新手引导 int guide = PlayerPrefs.GetInt("GemBattleGuide"); - // if (guide == 0) - // { - // Debug.Log("需要进行新手引导"); - // Pause(); + GameConfig.IsNewbie = guide == 0; - // uiStartMssk.gameObject.SetActive(false); - // countDownTextNew.text = ""; - // countDownTextNew.gameObject.SetActive(false); + if (GameConfig.IsNewbie) + { + Pause(); + uiStartMssk.gameObject.SetActive(false); + countDownTextNew.text = ""; + countDownTextNew.gameObject.SetActive(false); - // Instantiate(Resources.Load<GameObject>("UI/Guide/GuidePanel"), this.transform); - // //bGameStart = true; - // // 开始关卡 - // //EndlessLevelManager.instance.StartLevel(); - // //timeTextNew.gameObject.SetActive(true); + Instantiate(Resources.Load<GameObject>("UI/Guide/GuidePanel"), this.transform); + AddGuideEvent(); + } - // // 开始播放背景音乐. - // // if (bgMusic != null) - // // bgMusic.Play(); - // } + GameConfig.EndlessOpenAttackTowerCount = 0; + GameConfig.EndlessBuyTowerCount = 0; + GameConfig.EndlessPortUseSkillTowerCount = 0; + } + /// <summary> + /// 添加新手引导事件 + /// </summary> + private void AddGuideEvent() + { + EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateFireLv2, CreateFireLv2); + EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateFirstWave, CreateFirstWave); + EventCenter.Ins.Add((int)KTGMGemClient.EventType.RestartWave, RestartWave); + EventCenter.Ins.Add<int>((int)KTGMGemClient.EventType.AddGold, AddGold); + EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateWaterLv1, CreateWaterLv1); + EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateSecondWave, CreateSecondWave); + EventCenter.Ins.Add((int)KTGMGemClient.EventType.SkillRelease, SkillRelease); + EventCenter.Ins.Add((int)KTGMGemClient.EventType.GuideFinish, NewbieGuideEnd); + } + + /// <summary> + /// 在(2,3)位置放置一个火元素的塔 + /// </summary> + private void CreateFireLv2() + { + Tower aTower = EndlessRandomTower.instance.getTowerByName("GrowUpTower"); + EndlessGameUI.instance.PlaceTowerForce(aTower, new IntVector2(2, 3), 2); + } + + /// <summary> + /// 开始第一关的第一个波次 + /// </summary> + private void CreateFirstWave() + { + Restart(); + EventCenter.Ins.Add((int)KTGMGemClient.EventType.FireTowerChargeEnd, OnFireTowerChargeEnd); + } + + /// <summary> + /// 火塔充能释放完成 + /// </summary> + private void OnFireTowerChargeEnd() + { + Pause(); + EndlessLevelManager.instance.PauseWave(); + EventCenter.Ins.Remove((int)KTGMGemClient.EventType.FireTowerChargeEnd, OnFireTowerChargeEnd); + EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.ChargingEnd); + } + + /// <summary> + /// 恢复波次 + /// </summary> + private void RestartWave() + { + Restart(); + EndlessLevelManager.instance.RestartWave(); + } + + /// <summary> + /// 获得金币 + /// </summary> + /// <param name="gold"></param> + private void AddGold(int gold) + { + EndlessLevelManager.instance.Currency.AddCurrency(gold); + } + + /// <summary> + /// 在攻击位置上创建一个1级的水塔 + /// </summary> + private void CreateWaterLv1() + { + Tower aTower = EndlessRandomTower.instance.getTowerByName("CopyCatTower"); + EndlessGameUI.instance.PlaceTowerForce(aTower, new IntVector2(1, 3), 1); + } + + /// <summary> + /// 开始第二关 + /// </summary> + private void CreateSecondWave() + { + EndlessLevelManager.instance.NewbieUpdateLevel(); + beginSkillStep = true; + } + + /// <summary> + /// 在第三条兵线释放技能宝石 + /// </summary> + private void SkillRelease() + { + int attributeId = 99902; + int level = 1; + int waveLineIndex = 1; + + // 播放特效,并处理伤害. + EndlessWaveLineManager.instance.PlayWaveLineEffect(waveLineIndex); + AgentInsManager.instance.ExecWavelineAttack(waveLineIndex, attributeId, level, false); + ++GameConfig.EndlessPortUseSkillTowerCount; + StartCoroutine(Delay1()); + } + + private IEnumerator Delay1() + { + yield return new WaitForSeconds(1f); + EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.SkillReleaseDone); + } + + /// <summary> + /// 新手引导结束 + /// </summary> + private void NewbieGuideEnd() + { + EndlessLevelManager.instance.RestartWave(); + GameConfig.IsNewbieGuideCompleted = true; } /// <summary> @@ -149,66 +266,85 @@ timeTextNew.text = ConvertTime((float)Math.Ceiling(startTime)); } - if (!bFirstLoaded && !bGameStart) + if (!GameConfig.IsNewbie) { - bFirstLoaded = true; - secToDo = 4; + if (!bFirstLoaded && !bGameStart) + { + bFirstLoaded = true; + secToDo = 4; + } + + if (bFirstLoaded && !bGameStart) + { + secToDo -= Time.deltaTime; + countDownTextNew.gameObject.SetActive(true); + + if (secToDo >= 3) + { + countDownTextNew.text = "3"; + if (!bVibrate[3]) + { + bVibrate[3] = true; + MMVibrationManager.Haptic(HapticTypes.SoftImpact); + } + } + else if (secToDo >= 2) + { + countDownTextNew.text = "2"; + if (!bVibrate[2]) + { + bVibrate[2] = true; + MMVibrationManager.Haptic(HapticTypes.MediumImpact); + } + } + else if (secToDo >= 1) + { + countDownTextNew.text = "1"; + if (!bVibrate[1]) + { + bVibrate[1] = true; + MMVibrationManager.Haptic(HapticTypes.HeavyImpact); + } + } + else if (secToDo < 1) + { + countDownTextNew.text = "GO!"; + if (!bVibrate[0]) + { + bVibrate[0] = true; + MMVibrationManager.Haptic(HapticTypes.HeavyImpact); + } + } + + // 开启游戏,且隐藏中间的数字. + if (secToDo <= 0) + { + uiStartMssk.gameObject.SetActive(false); + countDownTextNew.text = ""; + countDownTextNew.gameObject.SetActive(false); + bGameStart = true; + // 开始关卡 + EndlessLevelManager.instance.StartLevel(); + timeTextNew.gameObject.SetActive(true); + + // 开始播放背景音乐. + if (bgMusic != null) + bgMusic.Play(); + } + } } - - if (bFirstLoaded && !bGameStart) + else { - secToDo -= Time.deltaTime; - countDownTextNew.gameObject.SetActive(true); + // 新手走的流程 + if (!bFirstLoaded && !bGameStart) + bFirstLoaded = true; - if (secToDo >= 3) + if (bFirstLoaded && !bGameStart) { - countDownTextNew.text = "3"; - if (!bVibrate[3]) - { - bVibrate[3] = true; - MMVibrationManager.Haptic(HapticTypes.SoftImpact); - } - } - else if (secToDo >= 2) - { - countDownTextNew.text = "2"; - if (!bVibrate[2]) - { - bVibrate[2] = true; - MMVibrationManager.Haptic(HapticTypes.MediumImpact); - } - } - else if (secToDo >= 1) - { - countDownTextNew.text = "1"; - if (!bVibrate[1]) - { - bVibrate[1] = true; - MMVibrationManager.Haptic(HapticTypes.HeavyImpact); - } - } - else if (secToDo < 1) - { - countDownTextNew.text = "GO!"; - if (!bVibrate[0]) - { - bVibrate[0] = true; - MMVibrationManager.Haptic(HapticTypes.HeavyImpact); - } - } - - // 开启游戏,且隐藏中间的数字. - if (secToDo <= 0) - { - uiStartMssk.gameObject.SetActive(false); - countDownTextNew.text = ""; - countDownTextNew.gameObject.SetActive(false); bGameStart = true; - // 开始关卡 EndlessLevelManager.instance.StartLevel(); timeTextNew.gameObject.SetActive(true); - // 开始播放背景音乐. if (bgMusic != null) bgMusic.Play(); } -- Gitblit v1.9.1