mergemilitary/Assets/MMOModule/Scripts/MMOUIs/MMOUIGuide.cs

96 lines
2.3 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
namespace MMO
{
public class MMOUIGuide : MMOUIBase
{
public Action DelGuideOver;
private List<MMOGuideStep> mSteps;
private int mCurrentIndex = 0;
protected override void OnInit()
{
base.OnInit();
mSteps = MMOUIManager.GetChildList<MMOGuideStep>(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<MMOUIMain>().OpenDaily();
}
else if (pIndex == 2)
{
MMOModule.Instance.UIMgr.GetUI<MMOUIDailyClaim>().Claim();
}
else if (pIndex == 4)
{
MMOModule.Instance.UIMgr.CloseUI<MMOUIMain>();
MMOModule.Instance.UIMgr.CloseUI<MMOUITop>();
}
else if (pIndex == 5)
{
Close();
DelGuideOver?.Invoke();
}
}
}
}