using cfg.GuideCfg; using Framework; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 新手引导步骤完成基类 /// public abstract class GuideCompleteBase { /// /// 引导完成回调 /// protected readonly Action completeAction; public GuideCompleteBase(Action complete) { completeAction = complete; } /// /// 添加监听 /// public abstract void AddListener(); /// /// 移除监听 /// public abstract void RemoveListener(); } /// /// 播放视频完成 /// public class PlayVideoComplete : GuideCompleteBase { /// /// 视频路径 /// private readonly string videoPath; public PlayVideoComplete(DataGuideCfg cfg, Action complete) : base(complete) { if (cfg.CompleteTypeParams.Length <= 0) throw new Exception($"引导类型:{cfg.CompleteType}参数错误"); videoPath = cfg.CompleteTypeParams[0]; } public override void AddListener() { EventManager.Instance.Register(EventManager.EventName.PlayVideoComplete, (Action)OnPlayVideoComplete); } public override void RemoveListener() { EventManager.Instance.Unregister(EventManager.EventName.PlayVideoComplete, (Action)OnPlayVideoComplete); } /// /// 播放视频完成回调 /// /// private void OnPlayVideoComplete(string path) { if (path != videoPath) return; completeAction?.Invoke(); } } /// /// 打开UI完成 /// public class OpenUIComplete : GuideCompleteBase { private readonly string uiName; public OpenUIComplete(DataGuideCfg cfg, Action complete) : base(complete) { if (cfg.CompleteTypeParams.Length <= 0) throw new Exception($"引导类型:{cfg.CompleteType}参数错误"); uiName = cfg.CompleteTypeParams[0]; } public override void AddListener() { EventManager.Instance.Register(EventManager.EventName.UIOpen, (Action)OnComplete); } public override void RemoveListener() { EventManager.Instance.Unregister(EventManager.EventName.UIOpen, (Action)OnComplete); } private void OnComplete(string uiName) { if (this.uiName != uiName) return; completeAction?.Invoke(); } } /// /// 打开UI并且UI动画播放完成 /// public class OpenUIAndAnimComplete : GuideCompleteBase { private readonly string uiName; public OpenUIAndAnimComplete(DataGuideCfg cfg, Action complete) : base(complete) { if (cfg.CompleteTypeParams.Length <= 0) throw new Exception($"引导类型:{cfg.CompleteType}参数错误"); uiName = cfg.CompleteTypeParams[0]; } public override void AddListener() { EventManager.Instance.Register(EventManager.EventName.UIOpenAndAnim, (Action)OnComplete); } public override void RemoveListener() { EventManager.Instance.Unregister(EventManager.EventName.UIOpenAndAnim, (Action)OnComplete); } private void OnComplete(string uiName) { if (this.uiName != uiName) return; completeAction?.Invoke(); } }