using System; using System.Collections.Generic; using UnityEngine; namespace MMO { public class MMOUIGuide : MMOUIBase { public Action DelGuideOver; private List mSteps; private int mCurrentIndex = 0; protected override void OnInit() { base.OnInit(); mSteps = MMOUIManager.GetChildList(transform); for (int i = 0; i < mSteps.Count; i++) { mSteps[i].DelExcute = OnStepExcute; } } public override void OnOpen() { base.OnOpen(); mCurrentIndex = 0; ShowStep(); } private void OnStepExcute() { int tExcuteIndex = mCurrentIndex; mSteps[mCurrentIndex].gameObject.SetActive(false); mCurrentIndex++; if (mCurrentIndex < mSteps.Count) { ShowStep(); } else { MMOUserData.Instance.FinishGuide(); Close(); } ExcuteByIndex(tExcuteIndex); } private void ShowStep() { if (mSteps[mCurrentIndex].DelayTime > 0) { Invoke("DelayShowStep", mSteps[mCurrentIndex].DelayTime); } else { DelayShowStep(); } } private void DelayShowStep() { mSteps[mCurrentIndex].gameObject.SetActive(true); } private void ExcuteByIndex(int pIndex) { if (pIndex == 0) { MMOModule.Instance.Enter(MMOUserData.Instance.Diamond, MMOUserData.Instance.GameLevel); } else if (pIndex == 1) { MMOModule.Instance.UIMgr.GetUI().OpenDaily(); } else if (pIndex == 2) { MMOModule.Instance.UIMgr.GetUI().Claim(); } else if (pIndex == 4) { MMOModule.Instance.UIMgr.CloseUI(); MMOModule.Instance.UIMgr.CloseUI(); } else if (pIndex == 5) { Close(); DelGuideOver?.Invoke(); } } } }