using cfg.GuideCfg; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 引导组 /// public class GuideGroup { /// /// 引导步骤 /// private readonly LinkedList linkGuideStep; /// /// 当前引导步骤 /// private LinkedListNode curStep; #region 属性 /// /// 引导组id /// public int GroupId { get; private set; } /// /// 是否引导中 /// public bool IsGuiding { get{ return curStep != null && curStep.Value.IsGuiding; } } /// /// 是否引导完成 /// public bool IsComplete { get { return curStep != null && curStep == linkGuideStep.Last && E_GuideState.Complete == curStep.Value.GuideState; } } /// /// 当前引导步骤 /// public GuideStepBase CurStep { get { return curStep.Value; } } /// /// 获取下一步引导id /// public int NextGroupId { get { if (null == linkGuideStep.Last) return 0; return linkGuideStep.Last.Value.Cfg.NextId; } } #endregion public GuideGroup(int groupId, LinkedList linkCfg) { GroupId = groupId; linkGuideStep = new(); foreach (DataGuideCfg cfg in linkCfg) { linkGuideStep.AddLast(CreateGuideStep(cfg)); } curStep = linkGuideStep.First; } /// /// 开始引导 /// public void BeginGuide() { if (null == curStep) return; curStep.Value.StartGuide(); } /// /// 开始下一步引导 /// public void BeginNextStep() { curStep = curStep.Next; curStep.Value.StartGuide(); } /// /// 结束引导 /// public void EndGuide() { if (IsGuiding) curStep.Value.EndGuide(); } /// /// 创建引导步骤 /// /// /// private GuideStepBase CreateGuideStep(DataGuideCfg dataGuideCfg) { if (null == dataGuideCfg) return null; return dataGuideCfg.GuideStepType switch { E_GuideStepType.PlayVideo => new PlayVideoStep(dataGuideCfg), E_GuideStepType.ClickButton => new ClickButtonStep(dataGuideCfg), E_GuideStepType.EnterHome => new FirstEnterMainStep(dataGuideCfg), E_GuideStepType.ShowGuideTip => new ShowGuideTipStep(dataGuideCfg), _ => throw new Exception($"未处理类型:{dataGuideCfg.GuideStepType}"), }; } }