using UnityEngine;
namespace SLSUtilities.Feedback
{
///
/// 时间提供者接口,框架层不依赖具体的 TimeManager 实现。
/// 游戏层通过 SelfTimeSubmodule 或适配器类实现此接口,注入到 FeedbackPlayer 中。
///
public interface IFeedbackTimeProvider
{
///
/// 全局时间缩放值。
///
float GlobalTimeScale { get; }
///
/// 分组时间缩放值,由具体实现根据 Fraction 返回对应值。
///
float GroupTimeScale { get; }
///
/// 角色本地时间缩放值。
///
float LocalTimeScale { get; }
///
/// 根据时间设置计算实际 deltaTime(秒)。
///
float GetDeltaTime(FeedbackTimeSettings settings);
///
/// 根据时间设置计算综合时间缩放系数(无 deltaTime 乘入)。
/// 返回 1.0 表示正常速度。
///
float GetTimeScale(FeedbackTimeSettings settings);
}
///
/// 默认时间提供者。当没有指定 IFeedbackTimeProvider 时使用,
/// 返回 unscaledDeltaTime 并且不受任何自定义时间缩放影响。
///
public class DefaultFeedbackTimeProvider : IFeedbackTimeProvider
{
public float GlobalTimeScale => 1f;
public float GroupTimeScale => 1f;
public float LocalTimeScale => 1f;
public static readonly DefaultFeedbackTimeProvider Instance = new DefaultFeedbackTimeProvider();
///
/// 返回固定时间缩放 1。
///
public float GetTimeScale(FeedbackTimeSettings settings)
{
return 1f;
}
///
/// 返回 unscaledDeltaTime,不受任何自定义时间缩放影响。
///
public float GetDeltaTime(FeedbackTimeSettings settings)
{
return Time.deltaTime;
}
}
}