using System; using UnityEngine; namespace BaseGames.World.Map { /// /// 玩家地图位置信息提供者接口。 /// /// MapPanel / MinimapHUD 依赖此接口而非具体组件, /// 支持替换实现(单人、多人、观察者模式、重播系统等场景)。 /// /// 通过 注册与获取。 /// public interface IPlayerPositionProvider { /// 玩家当前所在房间 ID;未在任何已知房间内时为 null 或空字符串。 string CurrentRoomId { get; } /// /// 玩家在当前房间内的归一化坐标(0~1,基于世界坐标精确插值)。 /// 每帧更新,可用于平滑移动图标。 /// Vector2 NormalizedPositionInRoom { get; } /// 玩家进入新房间时触发(参数为新房间 ID)。 event Action OnRoomChanged; /// /// 将世界坐标转换为所属房间 ID 和房间内归一化坐标(0~1)。 /// 用于在指定世界坐标处创建地图标记,无需手动计算格子坐标。 /// 坐标不在任何已知房间内时返回 false。 /// bool TryGetRoomAtWorldPos(Vector3 worldPos, out string roomId, out Vector2 normalizedPos); } }