2024-05-22 19:08:14 +08:00
|
|
|
using cfg.GuideCfg;
|
2024-05-24 15:07:50 +08:00
|
|
|
using Framework;
|
|
|
|
|
using System;
|
2024-05-22 19:08:14 +08:00
|
|
|
using System.Collections;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
2024-05-24 15:07:50 +08:00
|
|
|
/// <summary>
|
|
|
|
|
/// 引导状态
|
|
|
|
|
/// </summary>
|
|
|
|
|
public enum E_GuideState
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 未开始
|
|
|
|
|
/// </summary>
|
|
|
|
|
NotStarted,
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 引导中
|
|
|
|
|
/// </summary>
|
|
|
|
|
Guiding,
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 引导完成
|
|
|
|
|
/// </summary>
|
|
|
|
|
Complete,
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-22 19:08:14 +08:00
|
|
|
/// <summary>
|
|
|
|
|
/// 引导步骤基类
|
|
|
|
|
/// </summary>
|
|
|
|
|
public abstract class GuideStepBase
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 引导步骤类型
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string StepType;
|
|
|
|
|
|
2024-05-24 15:07:50 +08:00
|
|
|
/// <summary>
|
|
|
|
|
/// 引导状态
|
|
|
|
|
/// </summary>
|
|
|
|
|
protected E_GuideState guideState;
|
|
|
|
|
|
2024-05-22 19:08:14 +08:00
|
|
|
public GuideStepBase(DataGuideCfg dataGuideCfg)
|
|
|
|
|
{
|
2024-05-24 15:07:50 +08:00
|
|
|
guideState = E_GuideState.NotStarted;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void StartGuide()
|
|
|
|
|
{
|
|
|
|
|
DoBeforeGuide();
|
|
|
|
|
|
|
|
|
|
guideState = E_GuideState.Guiding;
|
|
|
|
|
|
|
|
|
|
DoGuide();
|
2024-05-22 19:08:14 +08:00
|
|
|
}
|
2024-05-24 15:07:50 +08:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 完成引导
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void Complete()
|
|
|
|
|
{
|
|
|
|
|
if (E_GuideState.NotStarted == guideState)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (E_GuideState.Complete == guideState)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
guideState = E_GuideState.Complete;
|
|
|
|
|
DoBeforeComplete();
|
|
|
|
|
GuideManager.Instance.Complete(this);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 引导显示之前
|
|
|
|
|
/// </summary>
|
|
|
|
|
protected virtual void DoBeforeGuide()
|
|
|
|
|
{ }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 引导完成之前
|
|
|
|
|
/// </summary>
|
|
|
|
|
protected virtual void DoBeforeComplete()
|
|
|
|
|
{ }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 引导
|
|
|
|
|
/// </summary>
|
|
|
|
|
protected abstract void DoGuide();
|
2024-05-22 19:08:14 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 点击按钮
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class ClickButtonStep : GuideStepBase
|
|
|
|
|
{
|
|
|
|
|
public ClickButtonStep(DataGuideCfg dataGuideCfg) : base(dataGuideCfg)
|
|
|
|
|
{
|
|
|
|
|
}
|
2024-05-24 15:07:50 +08:00
|
|
|
|
|
|
|
|
protected override void DoGuide()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
2024-05-22 19:08:14 +08:00
|
|
|
}
|
|
|
|
|
|
2024-05-24 15:07:50 +08:00
|
|
|
/// <summary>
|
|
|
|
|
/// 播放视频
|
|
|
|
|
/// </summary>
|
2024-05-22 19:08:14 +08:00
|
|
|
public class PlayVideoStep : GuideStepBase
|
|
|
|
|
{
|
2024-05-24 15:07:50 +08:00
|
|
|
/// <summary>
|
|
|
|
|
/// 视频路径
|
|
|
|
|
/// </summary>
|
|
|
|
|
private readonly string videoPath;
|
|
|
|
|
|
|
|
|
|
public PlayVideoStep(DataGuideCfg cfg) : base(cfg)
|
|
|
|
|
{
|
|
|
|
|
if (cfg.GuideTypeParams.Length <= 0)
|
|
|
|
|
throw new Exception($"引导类型:{StepType}参数错误");
|
|
|
|
|
|
|
|
|
|
videoPath = cfg.GuideTypeParams[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void DoBeforeGuide()
|
|
|
|
|
{
|
|
|
|
|
EventManager.Instance.Register(EventManager.EventName.PlayVideoComplete, (Action<string>)OnPlayVideoComplete);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override async void DoGuide()
|
2024-05-22 19:08:14 +08:00
|
|
|
{
|
2024-05-24 15:07:50 +08:00
|
|
|
await UI_PlayVideoController.Open(videoPath);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void DoBeforeComplete()
|
|
|
|
|
{
|
|
|
|
|
EventManager.Instance.Unregister(EventManager.EventName.PlayVideoComplete, (Action<string>)OnPlayVideoComplete);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 播放视频完成回调
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="path"></param>
|
|
|
|
|
private void OnPlayVideoComplete(string path)
|
|
|
|
|
{
|
|
|
|
|
if (path != videoPath)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
Complete();
|
2024-05-22 19:08:14 +08:00
|
|
|
}
|
|
|
|
|
}
|