using UnityEngine;
namespace Ichni.Story.Dialogue
{
///
/// 立绘渲染器抽象接口。所有立绘渲染实现(Sprite / Live2D / Spine)均须实现此接口,
/// 使 和 Yarn 命令层无需感知底层渲染细节。
///
public interface IPortraitRenderer
{
/// 此渲染器在舞台上占用的 RectTransform(用于位置操控)。
RectTransform RectTransform { get; }
///
/// 以指定角色数据和情绪名显示立绘。若角色已在台上则更新情绪。
///
void Show(CharacterData character, string emotion);
/// 隐藏立绘(不销毁对象,留存以便复用)。
void Hide();
/// 切换当前情绪(角色数据不变)。
void SetEmotion(string emotion);
///
/// 将立绘的 anchoredPosition 设为指定坐标(即时,无动画)。
///
/// 目标 anchoredPosition(画布空间,像素单位)。
void SetPosition(Vector2 anchoredPos);
///
/// 控制说话者高亮状态:说话者 alpha = 1.0,旁观者 alpha = 0.7(可由实现自行定义)。
///
void SetActiveVisual(bool isSpeaking);
///
/// 平滑移动到目标位置。
///
/// 目标像素坐标
/// 持续时间
void MoveTo(Vector2 anchoredPos, float duration);
///
/// 原地跳跃动画。
///
/// 跳跃力度(高度)
/// 跳跃次数
/// 持续时间
void Jump(float power, int numJumps, float duration);
///
/// 左右震动动画。
///
/// 持续时间
/// 震动力度(像素范围)
/// 震动频率
void Shake(float duration, float strength, int vibrato);
}
}