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();
}
}