From cb1985ffde9f46ac0f3dafcc601fc9de7b8af37e Mon Sep 17 00:00:00 2001 From: liuzhiwei <liuzhiwei@qq.com> Date: Fri, 30 Oct 2020 11:21:57 +0800 Subject: [PATCH] 三属性精灵登场 购买宝石 宝石合成特效,删除无用材质球 --- Assets/Scripts/Guide/GuideCtrl.cs | 353 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 334 insertions(+), 19 deletions(-) diff --git a/Assets/Scripts/Guide/GuideCtrl.cs b/Assets/Scripts/Guide/GuideCtrl.cs index 345d9fa..c09fc1c 100644 --- a/Assets/Scripts/Guide/GuideCtrl.cs +++ b/Assets/Scripts/Guide/GuideCtrl.cs @@ -1,12 +1,17 @@ using System.Collections; +using System.Diagnostics; using System.Collections.Generic; using UnityEngine; +using KTGMGemClient; /// <summary> /// 新手引导控制脚本 /// </summary> public class GuideCtrl : MonoBehaviour { + private static GuideCtrl ins; + public static GuideCtrl Ins { get { return ins; } } + GuidePanel panel;//UI Dictionary<GuideEnum, string[]> allGuideDic; GuideEnum currentStep;//当前引导到了第几步 @@ -18,6 +23,7 @@ /// </summary> void Awake() { + ins = this; AddDic(); currentStep = GuideEnum.None; currentIndex = -1; @@ -26,13 +32,58 @@ private void Start() { - Init(); + //int step = PlayerPrefs.GetInt("GemBattleGuide"); + + Init(0); + EventCenter.Ins.Add((int)KTGMGemClient.EventType.AddCard, AddCard); + EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateFireLv2, CreateFireLv2); + EventCenter.Ins.Add((int)KTGMGemClient.EventType.ChargingEnd, ChargingEnd); + EventCenter.Ins.Add((int)KTGMGemClient.EventType.KillDone, KillDone); + EventCenter.Ins.Add((int)KTGMGemClient.EventType.GetOneTowerPos, GetOneTowerPos); + EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateWaterLv1, CreateWaterLv1); + EventCenter.Ins.Add((int)KTGMGemClient.EventType.SkillStep, SkillStep); + EventCenter.Ins.Add((int)KTGMGemClient.EventType.SkillRelease, SkillRelease); + EventCenter.Ins.Add((int)KTGMGemClient.EventType.SkillReleaseDone, SkillReleaseDone); + } - public void Init() + + private void OnDestroy() + { + EventCenter.Ins.Remove((int)KTGMGemClient.EventType.AddCard, AddCard); + EventCenter.Ins.Remove((int)KTGMGemClient.EventType.CreateFireLv2, CreateFireLv2); + EventCenter.Ins.Remove((int)KTGMGemClient.EventType.ChargingEnd, ChargingEnd); + EventCenter.Ins.Remove((int)KTGMGemClient.EventType.KillDone, KillDone); + EventCenter.Ins.Remove((int)KTGMGemClient.EventType.GetOneTowerPos, GetOneTowerPos); + EventCenter.Ins.Remove((int)KTGMGemClient.EventType.CreateWaterLv1, CreateWaterLv1); + EventCenter.Ins.Remove((int)KTGMGemClient.EventType.SkillStep, SkillStep); + EventCenter.Ins.Remove((int)KTGMGemClient.EventType.SkillRelease, SkillRelease); + EventCenter.Ins.Remove((int)KTGMGemClient.EventType.SkillReleaseDone, SkillReleaseDone); + + + } + public void Init(int step) { //Time.timeScale = 0;//游戏暂停,这样会导致协程停止了 - ChangeStep(GuideEnum.Step0); + GameConfig.CanOpenNewTower = false; + // switch (step) + // { + // case 2: + // case 3: + // //生成两个火元素 + // break; + // case 4: + // //生成1个2级火元素,标记上阵位置 + + // break; + // case 5: + // //生成2级火元素塔,第一关小怪出木元素小怪 + + // break; + + // } + // ChangeStep((GuideEnum)(step + 1)); + } /// <summary> @@ -44,16 +95,16 @@ allGuideDic.Add(GuideEnum.Step0, new string[] { GuideConfig.showWords[0], GuideConfig.showWords[1] }); allGuideDic.Add(GuideEnum.Step1, new string[] { GuideConfig.showWords[2], GuideConfig.showWords[3] }); allGuideDic.Add(GuideEnum.Step2, new string[] { GuideConfig.showWords[4], GuideConfig.showWords[5] }); - allGuideDic.Add(GuideEnum.Step3, new string[] { GuideConfig.showWords[6], GuideConfig.showWords[7] }); - allGuideDic.Add(GuideEnum.Step4, new string[] { GuideConfig.showWords[8] }); - allGuideDic.Add(GuideEnum.Step5, new string[] { GuideConfig.showWords[9], GuideConfig.showWords[10] }); - allGuideDic.Add(GuideEnum.Step6, new string[] { GuideConfig.showWords[11], GuideConfig.showWords[12] }); - allGuideDic.Add(GuideEnum.Step7, new string[] { GuideConfig.showWords[13] }); - allGuideDic.Add(GuideEnum.Step8, new string[] { GuideConfig.showWords[14], GuideConfig.showWords[15] }); - allGuideDic.Add(GuideEnum.Step9, new string[] { GuideConfig.showWords[16], GuideConfig.showWords[17] }); - allGuideDic.Add(GuideEnum.Step10, new string[] { GuideConfig.showWords[18], GuideConfig.showWords[19] }); - allGuideDic.Add(GuideEnum.Step11, new string[] { GuideConfig.showWords[20], GuideConfig.showWords[21] }); - allGuideDic.Add(GuideEnum.Step12, new string[] { GuideConfig.showWords[22], GuideConfig.showWords[23], GuideConfig.showWords[24] }); + allGuideDic.Add(GuideEnum.Step3, new string[] { }); + allGuideDic.Add(GuideEnum.Step4, new string[] { GuideConfig.showWords[6] }); + allGuideDic.Add(GuideEnum.Step5, new string[] { GuideConfig.showWords[7], GuideConfig.showWords[8] }); + allGuideDic.Add(GuideEnum.Step6, new string[] { GuideConfig.showWords[9], GuideConfig.showWords[10] }); + allGuideDic.Add(GuideEnum.Step7, new string[] { GuideConfig.showWords[11] }); + allGuideDic.Add(GuideEnum.Step8, new string[] { GuideConfig.showWords[12] }); + allGuideDic.Add(GuideEnum.Step9, new string[] { }); + allGuideDic.Add(GuideEnum.Step10, new string[] { GuideConfig.showWords[13], GuideConfig.showWords[14] }); + allGuideDic.Add(GuideEnum.Step11, new string[] { GuideConfig.showWords[15] }); + allGuideDic.Add(GuideEnum.Step12, new string[] { GuideConfig.showWords[16], GuideConfig.showWords[17] }); } @@ -108,6 +159,9 @@ case GuideEnum.Step12: Step12(); break; + case GuideEnum.Finish: + Finish(); + break; } @@ -122,6 +176,9 @@ isShowing = true; if (currentIndex == -1)//初始化本步 { + CommonDebugHelper.DebugError("第1步开始"); + TDAA_SDKManager.Ins.Statistics(5);//埋点 + currentIndex = 0; needIndex = 2; panel.SetGuideUI(true); @@ -136,23 +193,56 @@ { if (currentIndex == -1) { - panel.SetGuideUI(false); + CommonDebugHelper.DebugError("第2步开始"); + TDAA_SDKManager.Ins.Statistics(6);//埋点 + TDAA_SDKManager.Ins.GuideStep(1);//埋点 + currentIndex = 0; needIndex = 2; - panel.Step1(allGuideDic[currentStep][currentIndex], currentIndex, OnFinishOneStep); + panel.SetGuideUI(false); + panel.Step1(allGuideDic[currentStep][currentIndex], currentIndex, Step1_1); } else if (currentIndex == 1) { - panel.Step1(allGuideDic[currentStep][currentIndex], currentIndex, OnFinishOneStep); + panel.Step1(allGuideDic[currentStep][currentIndex], currentIndex, Step1_2); + currentIndex++; } } + + /// <summary> + /// 分步1,购买1排1列的火元素 + /// </summary> + private void Step1_1() + { + panel.Step1_1(); + OnFinishOneStep(); + } + /// <summary> + /// 分步2,购买2排3列的火元素 + /// </summary> + private void Step1_2() + { + panel.Step1_2(); + StartCoroutine(AfterCreateFire()); + + } + + IEnumerator AfterCreateFire() + { + yield return new WaitForSeconds(1f); + OnFinishOneStep(); + } + //对话 private void Step2() { isShowing = true; if (currentIndex == -1) { + CommonDebugHelper.DebugError("第3步开始"); + TDAA_SDKManager.Ins.GuideStep(2);//埋点 + currentIndex = 0; needIndex = 2; panel.Step2(currentIndex); @@ -167,76 +257,301 @@ } } + //引导合成 private void Step3() { if (currentIndex == -1) { + CommonDebugHelper.DebugError("第4步开始"); + TDAA_SDKManager.Ins.GuideStep(3);//埋点 + currentIndex = 0; + needIndex = 2; + panel.Step3(currentIndex, ""); } } + + //开始拖拽 + public void BeginDrag() + { + panel.Step3_2(""); + } + + //结束推拽 没有合成,回到上一步 + public void EndDrag() + { + panel.Step3(0, ""); + } + + //合成了卡牌,开始下一步 + private void AddCard() + { + currentIndex = -1; + panel.StopShowDragPath(false); + ChangeStep(GuideEnum.Step4); + } + private void Step4() { if (currentIndex == -1) { + CommonDebugHelper.DebugError("第5步开始"); + TDAA_SDKManager.Ins.GuideStep(4);//埋点 + currentIndex = 0; + panel.StopShowDragPath(true); + panel.Step4(currentIndex, allGuideDic[currentStep][currentIndex]); } } + + //建造了塔,开始下一步 + private void CreateFireLv2() + { + currentIndex = -1; + panel.StopShowDragPath(true); + ChangeStep(GuideEnum.Step5); + } + + private void Step5() { if (currentIndex == -1) { + CommonDebugHelper.DebugError("第6步开始"); + TDAA_SDKManager.Ins.GuideStep(5);//埋点 + EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateFirstWave); + panel.Step5(currentIndex, ""); + } + else if (currentIndex == 1) + { + isShowing = true; + + panel.StartShowWord(allGuideDic[currentStep][currentIndex], ShowWordCallBack); } } + + private void ChargingEnd() + { + currentIndex = 0; + needIndex = 2; + panel.SetGuideUI(true); + isShowing = true; + panel.StartShowWord(allGuideDic[currentStep][currentIndex], ShowWordCallBack); + + } + private void Step6() { if (currentIndex == -1) { + CommonDebugHelper.DebugError("第7步开始"); + TDAA_SDKManager.Ins.GuideStep(6);//埋点 + panel.SetGuideUI(false); + //恢复出怪 + EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.RestartWave); + } + else if (currentIndex == 1) + { + isShowing = true; + + panel.StartShowWord(allGuideDic[currentStep][currentIndex], ShowWordCallBack); + + //增加200金币 + EventCenter.Ins.BroadCast<int>((int)KTGMGemClient.EventType.AddGold, 200); } } + + private void KillDone() + { + currentIndex = 0; + needIndex = 2; + panel.SetGuideUI(true); + isShowing = true; + panel.StartShowWord(allGuideDic[currentStep][currentIndex], ShowWordCallBack); + } + + private void Step7() { if (currentIndex == -1) { + CommonDebugHelper.DebugError("第8步开始"); + TDAA_SDKManager.Ins.GuideStep(7);//埋点 + currentIndex = 0; + needIndex = 1; + panel.SetGuideUI(false); + GameConfig.CanOpenNewTower = true; + + //等待解锁塔 + panel.Step7(currentIndex, allGuideDic[currentStep][currentIndex]); } } + + + private void GetOneTowerPos() + { + currentIndex = -1; + ChangeStep(GuideEnum.Step8); + } + + + private void Step8() { - if (currentIndex == -1) + isShowing = true; + if (currentIndex == -1)//初始化本步 { + CommonDebugHelper.DebugError("第9步开始"); + TDAA_SDKManager.Ins.GuideStep(8);//埋点 + GameConfig.CanOpenNewTower = false; + currentIndex = 0; + needIndex = 1; + panel.Step8(); + panel.StartShowWord(allGuideDic[currentStep][currentIndex], ShowWordCallBack); } + } + + + private void Step9() { if (currentIndex == -1) { + CommonDebugHelper.DebugError("第10步开始"); + TDAA_SDKManager.Ins.GuideStep(9);//埋点 + currentIndex = 0; + needIndex = 2; + panel.SetGuideUI(false); + panel.Step9("", currentIndex, Step9_1); + } + else if (currentIndex == 1) + { + panel.Step9("", currentIndex, null); } } + + /// <summary> + /// 分步9,购买1排5列的水元素 + /// </summary> + private void Step9_1() + { + panel.Step9_1(); + OnFinishOneStep(); + } + + private void CreateWaterLv1() + { + panel.CleanMask(); + panel.StopShowDragPath(true); + EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateSecondWave);//生成第二波小怪 + } + + private void SkillStep() + { + currentIndex = -1; + ChangeStep(GuideEnum.Step10); + } + private void Step10() { - if (currentIndex == -1) + isShowing = true; + if (currentIndex == -1)//初始化本步 { + CommonDebugHelper.DebugError("第11步开始"); + TDAA_SDKManager.Ins.GuideStep(10);//埋点 + + currentIndex = 0; + needIndex = 2; + panel.SetGuideUI(true); + panel.StartShowWord(allGuideDic[currentStep][currentIndex], ShowWordCallBack); } + else if (currentIndex == 1) + { + panel.StartShowWord(allGuideDic[currentStep][currentIndex], ShowWordCallBack); + panel.Step10(); + } } + private void Step11() { if (currentIndex == -1) { + CommonDebugHelper.DebugError("第12步开始"); + TDAA_SDKManager.Ins.GuideStep(11);//埋点 + + currentIndex = 0; + needIndex = 1; + + panel.Step11(currentIndex, allGuideDic[currentStep][currentIndex]); } } + + //开始拖拽 + public void BeginDrag11_1() + { + panel.Step11(1, ""); + } + + //结束推拽 没有合成,回到上一步 + public void EndDrag11_1() + { + panel.Step11(0, allGuideDic[currentStep][0]); + } + + private void SkillRelease() + { + panel.SkillRelease(); + } + + + private void SkillReleaseDone() + { + currentIndex = -1; + ChangeStep(GuideEnum.Step12); + } + private void Step12() { - if (currentIndex == -1) + isShowing = true; + if (currentIndex == -1)//初始化本步 { + CommonDebugHelper.DebugError("第13步开始"); + TDAA_SDKManager.Ins.GuideStep(12);//埋点 + currentIndex = 0; + needIndex = 2; + panel.Step12(); + + panel.StartShowWord(allGuideDic[currentStep][currentIndex], ShowWordCallBack); + } + else + { + panel.StartShowWord(allGuideDic[currentStep][currentIndex], ShowWordCallBack); } } + + private void Finish() + { + UnityEngine.Debug.Log("新手指导已经完成了"); + TDAA_SDKManager.Ins.GuideStep(13);//埋点 + + GameConfig.CanOpenNewTower = true; + GameConfig.CanBuyNewTower = true; + + EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.GuideFinish); + PlayerPrefs.SetInt("GemBattleGuide", 1); + Destroy(gameObject); + //gameObject.SetActive(false); + } + #endregion #region 点击事件 -- Gitblit v1.9.1