mergemilitary/Assets/Scripts/UIs/PanelGuide.cs

65 lines
1.4 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
public class PanelGuide : BasePanel
{
public Action<int> DelStepDone;
public Action DelGuideFinish;
[SerializeField] Transform mCtnGuide;
private int mGuideIndex;
private int mCurStepIndex = -1;
private List<GuideStep> mSteps;
public void InitGuide(int pGuideIndex)
{
mGuideIndex = pGuideIndex;
for (int i = 0; i < mCtnGuide.childCount; i++)
{
mCtnGuide.GetChild(i).gameObject.SetActive(i == pGuideIndex);
}
mSteps = Utils.GetChildListFirstLayer<GuideStep>(mCtnGuide.GetChild(pGuideIndex));
for (int i = 0; i < mSteps.Count; i++)
{
mSteps[i].DelStepDone = OnStepDone;
mSteps[i].InitStep(i);
}
mCurStepIndex = -1;
}
public void NextStep(Vector3 pScreenPos = default)
{
mCurStepIndex++;
if (mCurStepIndex < mSteps.Count)
{
mSteps[mCurStepIndex].StartStep(pScreenPos);
}
else
{
DelGuideFinish?.Invoke();
}
}
public void FinishCurrentStep()
{
if (mCurStepIndex >= 0 && mCurStepIndex < mSteps.Count)
{
mSteps[mCurStepIndex].FinishStep();
}
}
private void OnStepDone(int pIndex, bool pAutoNext)
{
DelStepDone?.Invoke(pIndex);
if (pAutoNext)
{
NextStep();
}
}
}