From 38136a34de9aa36bf15ec7471abd56e2cba6c26f Mon Sep 17 00:00:00 2001 From: chenxin <chenxin6991@163.com> Date: Tue, 27 Oct 2020 17:39:17 +0800 Subject: [PATCH] 修改无尽模式新手引导流程能全部跑通了 --- Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs | 282 +++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 225 insertions(+), 57 deletions(-) diff --git a/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs b/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs index ab79cf8..859c0b7 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 @@ -19,9 +22,9 @@ public TextMeshProUGUI timeStatic = null; /// <summary> - /// 选择buff界面 + /// 结算界面 /// </summary> - public GameObject SelectBuffUI; + public GameObject SettlementUI; /// <summary> /// 倒计时整体的背景图片Mask @@ -42,6 +45,10 @@ protected bool[] bVibrate; + private bool isPause; + + public bool beginSkillStep = false; + // Start is called before the first frame update void Start() { @@ -53,8 +60,136 @@ if (timeStatic) timeStatic.gameObject.SetActive(false); - SelectBuffUI.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() + { + int attributeId = 99902; + int level = 1; + int waveLineIndex = 1; + + // 播放特效,并处理伤害. + 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); + } + + /// <summary> + /// 新手引导结束 + /// </summary> + private void NewbieGuideEnd() + { + EndlessLevelManager.instance.RestartWave(); + GameConfig.IsNewbieGuideCompleted = true; } /// <summary> @@ -98,75 +233,108 @@ } } + public void Pause() + { + isPause = true; + } + + public void Restart() + { + isPause = false; + } + + public bool IsGameRunning { get { return !isPause; } } + // Update is called once per frame void Update() { + if (isPause) return; + if (bGameStart) { startTime += Time.deltaTime; 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 * 1.0f); // 放慢时间用于调试 + // 新手走的流程 + 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 = ""; - - // 开始关卡 - EndlessLevelManager.instance.StartLevel(); - - timeTextNew.gameObject.SetActive(true); bGameStart = true; + EndlessLevelManager.instance.StartLevel(); + timeTextNew.gameObject.SetActive(true); - // 开始播放背景音乐. if (bgMusic != null) bgMusic.Play(); } -- Gitblit v1.9.1