UniversalRenderStep

地图中立渲染步骤(280 行)

基本信息

属性 值
路径 com.gtnewhorizons.navigator.api.model.steps.UniversalRenderStep
行数 280(api/model/steps 包最大)
声明 public abstract class UniversalRenderStep<T extends ILocationProvider> implements XaeroRenderStep(:23)

⚠️ 直接 implements XaeroRenderStep(19 行的地图专用接口), 而不是 RenderStep —— XaeroRenderStep 继承 RenderStep, 所以间接满足地图中立框架的要求。

⚠️ 这样设计的代价:本类必须实现 XaeroRenderStep 的方法签名, 即使它服务的是 JourneyMap。

泛型 T extends ILocationProvider

location 字段类型是 T(:32), 所以子类能拿到具体数据点类型,无需强转。

13 个 protected 字段(:25-36)

字段 类型 初值 含义
fontScale double 1 字体缩放
rotation double 0 旋转角(度或弧度,见下)
width double NavigatorApi.CHUNK_WIDTH 绘制宽度
height double NavigatorApi.CHUNK_WIDTH 绘制高度
x / y double 0 屏幕位置
blockSize double 1 单方块像素尺寸
location T — 数据点
offsetX / offsetY double 0 偏移
zoom double 0 地图缩放级别
isJourneyMap / isXaero boolean false 当前地图模组标志
minScale double — 最小缩放阈值

⚠️ width / height 初值是 NavigatorApi.CHUNK_WIDTH(16.0) —— 即默认一个数据点占 16×16 像素,对应「一个数据点 = 一个区块」。

⚠️ isJourneyMap / isXaero 是两个布尔 (不是 SupportedMods 枚举)—— 所以无法表达「Xaero MiniMap vs Xaero World Map」的差别, 两个 Xaero 地图共用 isXaero = true。

为什么 280 行

需同时适配三种地图的渲染差异:

  • JourneyMap 5 / JM6 的 GL 状态与比例尺
  • Xaero 的渲染器回调
  • 地图中立层的默认行为

加上坐标换算与命中测试工具。

子类

子类 行 用途
UniversalLocationInteractableStep 75 非路点交互(唯一子类)
UniversalInteractableStep 21 双击切换路点(继承上一行)

⚠️ UniversalInteractableStep 的泛型上界是 T extends IWaypointAndLocationProvider(更窄), 所以它是 UniversalLocationInteractableStep 的协变子类。

地图专用对应物

地图 步骤接口
JourneyMap 5 JMRenderStep(24 行,已废弃)
Xaero XaeroRenderStep(19 行)

相关