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 行) |
相关
- UniversalLayerRenderer - 生成本类的渲染器
- UniversalLocationInteractableStep - 唯一子类
- XaeroRenderStep - 直接实现的接口
- NavigatorApi -
CHUNK_WIDTH/ACTION_KEY