mergemilitary/Assets/Scripts/Core/GuideManager.cs

90 lines
2.3 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GuideManager : D_MonoSingleton<GuideManager>
{
public int GuideCount = 3;
public bool EnableGuide = true;
public int CurGuideIndex => mCurGuideIndex;
private Dictionary<int, Action> mStepDoneDic = new Dictionary<int, Action>();
private int mCurGuideIndex = -1;
private Vector3 mStartPos;
private PanelGuide mUIGuide;
public void StartGuide(int pGuideIndex, Dictionary<int, Action> pStepDoneDic = null, Vector3 pStartPos = default)
{
if (!EnableGuide)
return;
if (mCurGuideIndex < 0)
{
if (pGuideIndex < GuideCount && !PlayerData.Instance.CheckGuide(pGuideIndex))
{
if (pStepDoneDic != null)
{
mStepDoneDic = pStepDoneDic;
}
mCurGuideIndex = pGuideIndex;
mStartPos = pStartPos;
mUIGuide = UIManager.Instance.OpenUI<PanelGuide>();
mUIGuide.InitGuide(pGuideIndex);
mUIGuide.DelStepDone = OnGuideStepDone;
mUIGuide.DelGuideFinish = OnGuideFinished;
mUIGuide.NextStep(mStartPos);
}
}
}
public void DoStep(Vector3 pScreenPos = default)
{
if (mCurGuideIndex < 0)
return;
mUIGuide.NextStep(pScreenPos);
}
public void FinishGuide(int pGuideIndex)
{
//Debug.Log("Finish guide!!!!!!");
PlayerData.Instance.FinishGuide(pGuideIndex);
mUIGuide.Close();
mUIGuide = null;
mCurGuideIndex = -1;
mStepDoneDic.Clear();
}
public void FinishCurrentStep()
{
if (mUIGuide != null)
{
mUIGuide.FinishCurrentStep();
}
}
private void OnGuideStepDone(int pIndex)
{
//Debug.Log(string.Format("step {0} done!!!", pIndex));
if (mStepDoneDic.ContainsKey(pIndex))
{
mStepDoneDic[pIndex]?.Invoke();
}
TKGSDKManager.Instance.LogEvent(Const.AdsEvent.Guide, Const.AdsKey.GuideStep, string.Format("{0}_{1}", mCurGuideIndex, pIndex));
}
private void OnGuideFinished()
{
FinishGuide(mCurGuideIndex);
}
}