2024-05-22 19:08:14 +08:00
|
|
|
|
using cfg.GuideCfg;
|
|
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 引导组
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class GuideGroup
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 引导步骤
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private readonly LinkedList<GuideStepBase> linkGuideStep;
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 当前引导步骤
|
|
|
|
|
|
/// </summary>
|
2024-05-24 19:11:19 +08:00
|
|
|
|
private LinkedListNode<GuideStepBase> curStep;
|
|
|
|
|
|
|
|
|
|
|
|
#region 属性
|
2024-05-28 18:47:23 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 引导组id
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public int GroupId
|
|
|
|
|
|
{
|
|
|
|
|
|
get; private set;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-05-24 19:11:19 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 是否引导中
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public bool IsGuiding
|
|
|
|
|
|
{
|
|
|
|
|
|
get{ return curStep != null && curStep.Value.GuideState == E_GuideState.Guiding; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 是否引导完成
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public bool IsComplete
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return curStep != null && curStep == linkGuideStep.Last && E_GuideState.Complete == curStep.Value.GuideState; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 当前引导步骤
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public GuideStepBase CurStep
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return curStep.Value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 获取下一步引导id
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public int NextGroupId
|
|
|
|
|
|
{
|
|
|
|
|
|
get
|
|
|
|
|
|
{
|
|
|
|
|
|
if (null == linkGuideStep.Last)
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
|
|
return linkGuideStep.Last.Value.Cfg.NextId;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
2024-05-22 19:08:14 +08:00
|
|
|
|
|
2024-05-28 18:47:23 +08:00
|
|
|
|
public GuideGroup(int groupId, LinkedList<DataGuideCfg> linkCfg)
|
2024-05-22 19:08:14 +08:00
|
|
|
|
{
|
2024-05-28 18:47:23 +08:00
|
|
|
|
GroupId = groupId;
|
2024-05-22 19:08:14 +08:00
|
|
|
|
linkGuideStep = new();
|
|
|
|
|
|
|
|
|
|
|
|
foreach (DataGuideCfg cfg in linkCfg)
|
|
|
|
|
|
{
|
|
|
|
|
|
linkGuideStep.AddLast(CreateGuideStep(cfg));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
curStep = linkGuideStep.First;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 开始引导
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public void BeginGuide()
|
|
|
|
|
|
{
|
2024-05-24 19:11:19 +08:00
|
|
|
|
if (null == curStep)
|
|
|
|
|
|
return;
|
2024-05-22 19:08:14 +08:00
|
|
|
|
|
2024-05-24 19:11:19 +08:00
|
|
|
|
curStep.Value.StartGuide();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 开始下一步引导
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public void BeginNextStep()
|
|
|
|
|
|
{
|
|
|
|
|
|
curStep = curStep.Next;
|
|
|
|
|
|
curStep.Value.StartGuide();
|
2024-05-22 19:08:14 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 结束引导
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public void EndGuide()
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 创建引导步骤
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="dataGuideCfg"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
private GuideStepBase CreateGuideStep(DataGuideCfg dataGuideCfg)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (null == dataGuideCfg)
|
|
|
|
|
|
return null;
|
2024-05-24 19:11:19 +08:00
|
|
|
|
|
2024-05-27 13:32:18 +08:00
|
|
|
|
return dataGuideCfg.GuideType switch // TODO,字符串测试用,后续配置改枚举
|
2024-05-22 19:08:14 +08:00
|
|
|
|
{
|
|
|
|
|
|
"播放视频" => new PlayVideoStep(dataGuideCfg),
|
2024-05-24 19:11:19 +08:00
|
|
|
|
"点击按钮" => new ClickButtonStep(dataGuideCfg),
|
2024-05-28 13:40:44 +08:00
|
|
|
|
"进入主界面" => new FirstEnterMainStep(dataGuideCfg),
|
|
|
|
|
|
"显示引导提示" => new ShowGuideTipStep(dataGuideCfg),
|
2024-05-24 19:11:19 +08:00
|
|
|
|
"" => default,
|
|
|
|
|
|
_ => throw new Exception($"未处理类型:{dataGuideCfg.GuideType}"),
|
2024-05-22 19:08:14 +08:00
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|