InteractableLayerManager

可交互图层管理器

基本信息

属性 值
路径 com.gtnewhorizons.navigator.api.model.layers.InteractableLayerManager
行数 130
继承 extends LayerManager

在 LayerManager 之上加路点管理能力。

两个字段(:23-25)

protected final Map<SupportedMods, WaypointManager> waypointManagers = new EnumMap<>(SupportedMods.class);
protected Waypoint activeWaypoint = null;
字段 说明
waypointManagers 每个地图模组一个路点管理器
activeWaypoint 当前活动路点(初值 null)

⚠️ EnumMap 的 key 仍是 SupportedMods —— 与 LayerManager 的 layerRenderer 同构, 所以两个 map 覆盖同一组地图模组。

addLayerRenderer 的桥接重载(:49-67)

方法 行 说明
addLayerRenderer(InteractableLayerManager, SupportedMods) :49-56 abstract,参数类型比父类更窄
addLayerRenderer(LayerManager, SupportedMods) :73-~80 final 桥接,把基类调用转发到上面那个

⚠️ 这是协变参数收窄 + final 桥接的手法: 父类声明 addLayerRenderer(LayerManager, SupportedMods)(abstract), 子类用 addLayerRenderer(InteractableLayerManager, SupportedMods) 重载 并另写一个 final 同名方法接父类签名,转发时强转。

⚠️ 若消费方在 LayerManager 引用上调用 addLayerRenderer, 走的是 final 桥接版 → 强转 InteractableLayerManager —— 若实际对象不是本类会 ClassCastException。

addWaypointManager(:58-67)

protected @Nullable WaypointManager addWaypointManager(InteractableLayerManager manager, SupportedMods mod)

非 abstract(有默认实现,返回 null 表示不支持), 返回 @Nullable。

⚠️ 与 addLayerRenderer 不同 —— 路点管理是可选的, 所以不给抽象实现,让子类只在需要时覆写。

三个路点状态方法

方法 行 说明
setActiveWaypoint(Waypoint) :82-92 设置活动路点(11 行)
clearActiveWaypoint() :94-104 清除(11 行)
hasActiveWaypoint() :106-112 查询
getWaypointManager(SupportedMods) :114-117 返回 @Nullable

⚠️ set / clear 各有 11 行 —— 不是简单赋值, 会同步到所有已注册的 WaypointManager(遍历 waypointManagers 的值)。

⚠️ 缺 getActiveWaypoint() —— 与 WaypointManager 同样的不对称问题: 能 set / clear / has,但拿不到当前路点对象 (虽然有 protected activeWaypoint 字段可被子类读)。

updateElement 的两个重载(:69-71、:119-~123)

方法 行 签名
updateElement(IWaypointAndLocationProvider) :69-71 协变收窄的覆写
updateElement(ILocationProvider) :119-~123 final 桥接

与 addLayerRenderer 同样的手法。 ILocationProvider 版内部判断是否 instanceof IWaypointAndLocationProvider 再转发(:69-71 与 :119 的对照)。

子类

DirtyChunkLayerManager(100 行)—— ⚠️ 它继承的是 LayerManager 还是本类需看源码, 但它注册了 DirtyChunkButtonManager, 而按钮属于可交互体系。

相关