using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using KTGMGemClient;
///
/// 新手引导控制脚本
///
public class GuideCtrl : MonoBehaviour
{
private static GuideCtrl ins;
public static GuideCtrl Ins { get { return ins; } }
GuidePanelNew panel;//UI
Dictionary allGuideDic;
GuideEnum currentStep;//当前引导到了第几步
///
/// Awake is called when the script instance is being loaded.
///
void Awake()
{
ins = this;
AddDic();
currentStep = GuideEnum.None;
panel = gameObject.AddComponent();
}
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;
}
///
/// 初始化字典
///
void AddDic()
{
allGuideDic = new Dictionary();
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[] {
"不好,敌人太多了",
"试着用技能秒杀全部敌人吧!",
"对付不同敌人,用&效果更好,请继续战斗吧,训练师"// & 特定的精灵
});
}
///
/// 引导步骤
///
///
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();
}
///
/// 上阵一个二级木元素
///
private void CreateWoodLv2()
{
panel.OnWoodAttackPos();
ChangeStep(GuideEnum.Step3);
}
///
/// 步骤3 :对话---出兵后杀光---对话---展示火鸡
///
///
///
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);
}
///
/// 对话结束,出兵
///
private void AfterTalk()
{
panel.Step3AfterTalk();
EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateFirstWave);
}
///
/// 第一关怪物被杀光
///
private void KillDone()
{
string[] s2 = new string[] { allGuideDic[currentStep][2] };
panel.CloseSkillImage();
panel.Step3(s2, OpenBoxFire);
}
///
/// 展示火鸡
///
private void OpenBoxFire()
{
panel.Step3_3(() =>
{
ChangeStep(GuideEnum.Step4);
});
}
///
/// 步骤4 :点击购买---上阵
///
///
///
public void Step4()
{
Debug.Log("火鸡组件展示完毕,打点");
TDAA_SDKManager.Ins.GuideStep(3);//埋点
panel.Step4(allGuideDic[currentStep]);
}
private void CreateFireLv1()
{
panel.OnFireAttackPos();
ChangeStep(GuideEnum.Step5);
}
///
/// 步骤5:第二关出兵---三波后---对话框---置换2&3---杀光敌人---对话框---展示water
///
///
///
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);
}
///
/// 展示水
///
private void OpenBoxWater()
{
panel.Step5_7(() =>
{
ChangeStep(GuideEnum.Step6);
});
}
///
/// 步骤6:购买---上阵---第三关---杀光
///
///
///
public void Step6()
{
Debug.Log("展示雪糕完毕,打点");
TDAA_SDKManager.Ins.GuideStep(5);//埋点
panel.Step6(allGuideDic[currentStep]);
}
///
/// 水元素上阵了
///
private void CreateWaterLv1()
{
panel.OnWaterAttackPos();
EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateThirdWave);//开始第三关
}
private void KillThirdDone()
{
ChangeStep(GuideEnum.Step7);
}
///
/// 步骤6:
///
///
///
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 点击事件
///
/// 完成了当前步骤中的一个分步骤
///
public void OnFinishOneStep()
{
// if (needIndex - currentIndex > 0)
// {
// //说明当前步骤没完成,进行下一个分步
// currentIndex++;
// ChangeStep(currentStep);
// }
// else
// {
// //开始新的步骤
// currentIndex = -1;
// ChangeStep(currentStep + 1);
// }
}
#endregion
}