From 1f5eda1c9d22a3676298751c7282a5874f13bed0 Mon Sep 17 00:00:00 2001 From: River Jiang <546213258@qq.com> Date: Tue, 27 Oct 2020 17:26:52 +0800 Subject: [PATCH] 加入充能、子弹进度条保持进度的功能 --- Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs | 256 +++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 206 insertions(+), 50 deletions(-) diff --git a/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs b/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs index e2dd0f7..b5114bb 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,6 +47,8 @@ private bool isPause; + public bool beginSkillStep = false; + // Start is called before the first frame update void Start() { @@ -57,7 +62,137 @@ timeStatic.gameObject.SetActive(false); EndlessBuffSelect.instance.HideBuffUI(); EndlessBossHPManager.instance.HideHP(); + EndlessSettlement settlement = SettlementUI.transform.GetChild(0).GetComponent<EndlessSettlement>(); + settlement.Init(); SettlementUI.SetActive(false); + + //查询是否已经做过了新手引导 + int guide = PlayerPrefs.GetInt("GemBattleGuide"); + GameConfig.IsNewbie = guide == 0; + + if (GameConfig.IsNewbie) + { + Pause(); + uiStartMssk.gameObject.SetActive(false); + countDownTextNew.text = ""; + countDownTextNew.gameObject.SetActive(false); + + Instantiate(Resources.Load<GameObject>("UI/Guide/GuidePanel"), this.transform); + AddGuideEvent(); + } + } + + /// <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() + { + EndlessLevelManager.instance.RestartWave(); + int attributeId = 99902; + int level = 1; + int waveLineIndex = 2; + + // 播放特效,并处理伤害. + EndlessWaveLineManager.instance.PlayWaveLineEffect(waveLineIndex); + AgentInsManager.instance.ExecWavelineAttack(waveLineIndex, attributeId, level, false); + StartCoroutine(Delay1()); + } + + private IEnumerator Delay1() + { + yield return new WaitForSeconds(1f); + EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.SkillReleaseDone); + GameConfig.IsNewbie = false; + EndlessLevelManager.instance.PauseWave(); + } + + /// <summary> + /// 新手引导结束 + /// </summary> + private void NewbieGuideEnd() + { + EndlessLevelManager.instance.RestartWave(); + GameConfig.IsNewbie = false; } /// <summary> @@ -124,64 +259,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; + // 新手走的流程 + 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 = ""; bGameStart = true; - // 开始关卡 EndlessLevelManager.instance.StartLevel(); timeTextNew.gameObject.SetActive(true); - // 开始播放背景音乐. if (bgMusic != null) bgMusic.Play(); } -- Gitblit v1.9.1