using UnityEngine;
namespace BaseGames.Camera
{
///
/// 相机服务接口。通过 ServiceLocator.GetOrDefault<ICameraService>() 访问。
///
public interface ICameraService
{
///
/// 切换到目标相机区域。
/// 用于触发区域优先级仲裁:
/// 仅当 priority ≥ 当前激活优先级时才执行切换。
/// 传 0(默认)时始终切换(适合 RoomController 初始化或场景加载)。
///
/// = true 时使用即时切断混合(房间入口硬切:相机直接跳到目标位置、无过渡动画),
/// 同时重置窥视偏移,避免旧房间的窥视偏移残留到新房间。
/// 适合通过门传送后的首次相机初始化;区域内触发区域切换应保持默认 false。
///
///
void SwitchArea(CameraArea area, int priority = 0, bool instantCut = false);
///
/// 释放 (通常由 CameraTriggerZone.OnTriggerExit 调用)。
/// 若 正是当前激活区域,切换到 ;
/// 否则无操作。
///
void ReleaseArea(CameraArea releasedArea, CameraArea fallback);
/// 为全局双 VCam 设置跟随目标(Player/CameraFollowTarget)。
void SetFollowTarget(Transform followTarget);
/// 触发屏幕抖动(指定速度矢量)。
void TriggerImpulse(Vector3 velocity);
/// 触发屏幕抖动(向下方向)。
void TriggerImpulse(float strength = 0.3f);
///
/// 平滑过渡正交相机尺寸。 = 0 时瞬间切换。
/// 适用于 Boss 战拉远、特殊演出室拉近等场景。
///
void SetLensSize(float orthographicSize, float duration = 0f);
}
}