using System.Collections;
|
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; } }
|
|
GuidePanelNew panel;//UI
|
Dictionary<GuideEnum, string[]> allGuideDic;
|
GuideEnum currentStep;//当前引导到了第几步
|
|
|
/// <summary>
|
/// Awake is called when the script instance is being loaded.
|
/// </summary>
|
void Awake()
|
{
|
ins = this;
|
AddDic();
|
currentStep = GuideEnum.None;
|
|
panel = gameObject.AddComponent<GuidePanelNew>();
|
}
|
|
private void Start()
|
{
|
//int step = PlayerPrefs.GetInt("GemBattleGuide");
|
|
TDAA_SDKManager.Ins.Statistics(5);//埋点
|
Init(0);
|
|
EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateWoodLv2, CreateWoodLv2);
|
|
EventCenter.Ins.Add((int)KTGMGemClient.EventType.KillDone, KillDone);
|
|
EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateFireLv1, CreateFireLv1);
|
EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateWaterLv1, CreateWaterLv1);
|
|
EventCenter.Ins.Add((int)KTGMGemClient.EventType.DragStep, DragStep);
|
EventCenter.Ins.Add((int)KTGMGemClient.EventType.KillSecondDone, KillSecondDone);
|
EventCenter.Ins.Add((int)KTGMGemClient.EventType.KillThirdDone, KillThirdDone);
|
|
EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateFourthWaveDone, CreateFourthWaveDone);
|
|
}
|
|
private void OnDestroy()
|
{
|
|
EventCenter.Ins.Remove((int)KTGMGemClient.EventType.CreateWoodLv2, CreateWoodLv2);
|
|
EventCenter.Ins.Remove((int)KTGMGemClient.EventType.KillDone, KillDone);
|
|
EventCenter.Ins.Remove((int)KTGMGemClient.EventType.CreateFireLv1, CreateFireLv1);
|
EventCenter.Ins.Remove((int)KTGMGemClient.EventType.CreateWaterLv1, CreateWaterLv1);
|
|
EventCenter.Ins.Remove((int)KTGMGemClient.EventType.DragStep, DragStep);
|
|
}
|
public void Init(int step)
|
{
|
ChangeStep(GuideEnum.Step1);
|
GameConfig.CanOpenNewTower = false;
|
|
}
|
|
/// <summary>
|
/// 初始化字典
|
/// </summary>
|
void AddDic()
|
{
|
allGuideDic = new Dictionary<GuideEnum, string[]>();
|
|
allGuideDic.Add(GuideEnum.Step1, new string[] {
|
"对面的怪物要发动攻击了,训练师大人,请做好防御准备",
|
"我给您准备了一份宝箱大礼,打开试试"});
|
|
allGuideDic.Add(GuideEnum.Step2, new string[] { "点击按钮购买精灵", "再购买一个" });
|
|
allGuideDic.Add(GuideEnum.Step3, new string[] {
|
"玉米枪手单体输出高,能有效克制$单位",// $ 慢速肉盾
|
"看到走路慢吞吞的怪,就用玉米枪手对付它吧!" ,
|
"接下来该换我亲自上阵了"});
|
|
allGuideDic.Add(GuideEnum.Step4, new string[] { "点击按钮购买精灵" });
|
|
|
allGuideDic.Add(GuideEnum.Step5, new string[] {
|
"对付%敌人,我的`是最合适的", // % 大量 ` 群攻炸弹
|
"请交换我和玉米枪手的位置!以后也可以随时交换哦" ,
|
"最后的伙伴已经达到战场,看看它是谁吧"});
|
|
allGuideDic.Add(GuideEnum.Step6, new string[] { "点击按钮购买精灵" });
|
allGuideDic.Add(GuideEnum.Step7, new string[] {
|
"不好,敌人太多了",
|
"试着用技能秒杀全部敌人吧!",
|
"对付不同敌人,用&效果更好,请继续战斗吧,训练师"// & 特定的精灵
|
});
|
|
}
|
|
/// <summary>
|
/// 引导步骤
|
/// </summary>
|
/// <param name="step"></param>
|
public void ChangeStep(GuideEnum step)
|
{
|
currentStep = step;
|
switch (currentStep)
|
{
|
case GuideEnum.Step1:
|
Step1();
|
break;
|
case GuideEnum.Step2:
|
Step2();
|
break;
|
case GuideEnum.Step3:
|
Step3();
|
break;
|
case GuideEnum.Step4:
|
Step4();
|
break;
|
case GuideEnum.Step5:
|
Step5();
|
break;
|
case GuideEnum.Step6:
|
Step6();
|
break;
|
case GuideEnum.Step7:
|
Step7();
|
break;
|
case GuideEnum.Finish:
|
Finish();
|
break;
|
|
}
|
}
|
|
|
#region 步骤分解
|
|
//步骤1 :对话---开箱---玉米
|
private void Step1()
|
{
|
CommonDebugHelper.DebugError("步骤1 :对话---开箱---玉米");
|
panel.Step1(allGuideDic[currentStep], Step1Finish);
|
|
}
|
|
private void Step1Finish()
|
{
|
Debug.Log("玉米组件展示结束,打点");
|
TDAA_SDKManager.Ins.GuideStep(1);//埋点
|
TDAA_SDKManager.Ins.Statistics(6);//埋点
|
ChangeStep(GuideEnum.Step2);
|
}
|
|
//步骤2:购买---购买---合成---上阵
|
private void Step2()
|
{
|
CommonDebugHelper.DebugError("步骤2:购买---购买---合成---上阵");
|
panel.Step2(allGuideDic[currentStep]);
|
}
|
|
public void BeginDrag()
|
{
|
panel.RimWood1();
|
}
|
|
public void EndDrag()
|
{
|
panel.RimWood2();
|
}
|
|
//合成了2级木 准备引导上阵
|
public void AddCard()
|
{
|
panel.AddCard();
|
}
|
|
/// <summary>
|
/// 上阵一个二级木元素
|
/// </summary>
|
private void CreateWoodLv2()
|
{
|
panel.OnWoodAttackPos();
|
ChangeStep(GuideEnum.Step3);
|
}
|
|
|
|
/// <summary>
|
/// 步骤3 :对话---出兵后杀光---对话---展示火鸡
|
/// </summary>
|
/// <param name="str"></param>
|
/// <param name="cb"></param>
|
public void Step3()
|
{
|
CommonDebugHelper.DebugError("步骤3 :对话---出兵后杀光---对话---展示火鸡");
|
Debug.Log("玉米上阵了,打点");
|
|
TDAA_SDKManager.Ins.GuideStep(2);//埋点
|
|
string[] s1 = new string[] { allGuideDic[currentStep][0], allGuideDic[currentStep][1] };
|
|
panel.Step3(s1, AfterTalk);
|
}
|
|
/// <summary>
|
/// 对话结束,出兵
|
/// </summary>
|
private void AfterTalk()
|
{
|
panel.Step3AfterTalk();
|
EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateFirstWave);
|
}
|
|
/// <summary>
|
/// 第一关怪物被杀光
|
/// </summary>
|
private void KillDone()
|
{
|
string[] s2 = new string[] { allGuideDic[currentStep][2] };
|
panel.CloseSkillImage();
|
panel.Step3(s2, OpenBoxFire);
|
}
|
|
/// <summary>
|
/// 展示火鸡
|
/// </summary>
|
private void OpenBoxFire()
|
{
|
panel.Step3_3(() =>
|
{
|
ChangeStep(GuideEnum.Step4);
|
});
|
}
|
|
|
|
/// <summary>
|
/// 步骤4 :点击购买---上阵
|
/// </summary>
|
/// <param name="str"></param>
|
/// <param name="cb"></param>
|
public void Step4()
|
{
|
Debug.Log("火鸡组件展示完毕,打点");
|
|
TDAA_SDKManager.Ins.GuideStep(3);//埋点
|
|
panel.Step4(allGuideDic[currentStep]);
|
}
|
|
private void CreateFireLv1()
|
{
|
panel.OnFireAttackPos();
|
ChangeStep(GuideEnum.Step5);
|
}
|
|
/// <summary>
|
/// 步骤5:第二关出兵---三波后---对话框---置换2&3---杀光敌人---对话框---展示water
|
/// </summary>
|
/// <param name="str"></param>
|
/// <param name="cb"></param>
|
public void Step5()
|
{
|
Debug.Log("火鸡上阵了,打点");
|
|
//第二关出兵
|
TDAA_SDKManager.Ins.GuideStep(4);//埋点
|
//panel.Step5()
|
EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateSecondWave);
|
}
|
|
private void DragStep()
|
{
|
string[] s2 = new string[] { allGuideDic[currentStep][0], allGuideDic[currentStep][1] };
|
|
panel.Step5(s2);
|
}
|
|
//开始拖拽
|
public void BeginDrag5_1()
|
{
|
panel.Step5Drag(1);
|
}
|
|
//结束推拽 没有合成,回到上一步
|
public void EndDrag5_1()
|
{
|
panel.Step5Drag(0);
|
}
|
|
public void DragDone()
|
{
|
GameConfig.CanDragTower = false;
|
CommonDebugHelper.Debug("结束拖拽");
|
panel.Step5Drag(2);
|
EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.RestartWave);
|
//ChangeStep(GuideEnum.Step6);
|
}
|
|
private void KillSecondDone()
|
{
|
string[] s2 = new string[] { allGuideDic[currentStep][2] };
|
|
panel.Step5Talk(s2, OpenBoxWater);
|
}
|
|
/// <summary>
|
/// 展示水
|
/// </summary>
|
private void OpenBoxWater()
|
{
|
panel.Step5_7(() =>
|
{
|
ChangeStep(GuideEnum.Step6);
|
});
|
}
|
|
/// <summary>
|
/// 步骤6:购买---上阵---第三关---杀光
|
/// </summary>
|
/// <param name="str"></param>
|
/// <param name="cb"></param>
|
public void Step6()
|
{
|
Debug.Log("展示雪糕完毕,打点");
|
|
TDAA_SDKManager.Ins.GuideStep(5);//埋点
|
panel.Step6(allGuideDic[currentStep]);
|
}
|
|
/// <summary>
|
/// 水元素上阵了
|
/// </summary>
|
private void CreateWaterLv1()
|
{
|
panel.OnWaterAttackPos();
|
EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateThirdWave);//开始第三关
|
}
|
|
private void KillThirdDone()
|
{
|
ChangeStep(GuideEnum.Step7);
|
}
|
|
/// <summary>
|
/// 步骤6:
|
/// </summary>
|
/// <param name="str"></param>
|
/// <param name="cb"></param>
|
public void Step7()
|
{
|
|
Debug.Log("第三关杀完怪了,打点");
|
|
TDAA_SDKManager.Ins.GuideStep(6);//埋点
|
//一大波
|
panel.Step7();
|
}
|
|
private void CreateFourthWaveDone()
|
{
|
string[] s1 = new string[] { allGuideDic[currentStep][0], allGuideDic[currentStep][1] };
|
|
//对话后准备引导
|
panel.Step7Talk(s1, Step7AfterTalk);
|
}
|
|
private void Step7AfterTalk()
|
{
|
string[] s2 = new string[] { allGuideDic[currentStep][2] };
|
|
panel.SkillRelease(s2, Finish);
|
}
|
|
|
private void Finish()
|
{
|
UnityEngine.Debug.Log("新手指导已经完成了");
|
Debug.Log("完成新手引导,打点");
|
|
TDAA_SDKManager.Ins.GuideStep(7);//埋点
|
|
GameConfig.CanOpenNewTower = true;
|
GameConfig.CanBuyNewTower = true;
|
panel.FinishGuide();
|
EndlessRandomTower.instance.SetCountDown(false, true);
|
EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.GuideFinish);
|
PlayerPrefs.SetInt("GemBattleGuide", 1);
|
Destroy(gameObject);
|
}
|
|
#endregion
|
|
#region 点击事件
|
/// <summary>
|
/// 完成了当前步骤中的一个分步骤
|
/// </summary>
|
public void OnFinishOneStep()
|
{
|
// if (needIndex - currentIndex > 0)
|
// {
|
// //说明当前步骤没完成,进行下一个分步
|
// currentIndex++;
|
// ChangeStep(currentStep);
|
// }
|
// else
|
// {
|
// //开始新的步骤
|
// currentIndex = -1;
|
// ChangeStep(currentStep + 1);
|
// }
|
}
|
|
#endregion
|
|
}
|