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.GuideState == E_GuideState.Guiding; } } /// /// 是否引导完成 /// 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() { } /// /// 创建引导步骤 /// /// /// private GuideStepBase CreateGuideStep(DataGuideCfg dataGuideCfg) { if (null == dataGuideCfg) return null; return dataGuideCfg.GuideType switch // TODO,字符串测试用,后续配置改枚举 { "播放视频" => new PlayVideoStep(dataGuideCfg), "点击按钮" => new ClickButtonStep(dataGuideCfg), "进入主界面" => new FirstEnterMainStep(dataGuideCfg), "显示引导提示" => new ShowGuideTipStep(dataGuideCfg), "" => default, _ => throw new Exception($"未处理类型:{dataGuideCfg.GuideType}"), }; } }