using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class GuideManager : D_MonoSingleton { public int GuideCount = 3; public bool EnableGuide = true; public int CurGuideIndex => mCurGuideIndex; private Dictionary mStepDoneDic = new Dictionary(); private int mCurGuideIndex = -1; private Vector3 mStartPos; private PanelGuide mUIGuide; public void StartGuide(int pGuideIndex, Dictionary 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(); 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); } }