网格编辑器
基本信息
| 属性 | 值 |
|---|---|
| 界面类 | journeymap.client.ui.dialog.GridEditor(GridEditor.java:35),继承 JmUI |
| 打开方式 | UIManager.openGridEditor(JmUI)(UIManager.java:264) |
| 规格模型 | journeymap.client.model.GridSpec / GridSpecs |
| 网格渲染器 | journeymap.client.render.map.GridRenderer(GridRenderer.java:42) |
| 网格样式数 | 3(Squares / Dots / Checkers) |
| 默认规格组 | 3(DEFAULT_DAY / DEFAULT_NIGHT / DEFAULT_UNDERGROUND) |
| 界面按钮数 | 约 9 |
功能
网格是在地图上叠加的坐标参考线。GridEditor 让你为白天、夜间、地下三种地图类型分别设定网格的样式与颜色——因为夜间需要更亮、地下需要更暗的网格才看得清。
3 种样式
GridSpec.Style 枚举(GridSpec.java:117-121)每项绑定一个语言键与一张贴图:
| 样式 | 语言键 | 贴图名 |
|---|---|---|
Squares |
jm.common.grid_style_squares |
TextureCache.Name.GridSquares |
Dots |
jm.common.grid_style_dots |
TextureCache.Name.GridDots |
Checkers |
jm.common.grid_style_checkers |
TextureCache.Name.GridCheckers |
displayName()(:131-134)用 Constants.getString(key) 取本地化名称。
3 个默认规格
GridSpecs(GridSpecs.java:11)为三种地图类型各定义一个默认网格,参数为 (style, red, green, blue, alpha):
| 常量 | 样式 | RGB | alpha | 源码 |
|---|---|---|---|---|
DEFAULT_DAY |
Squares |
(.5, .5, .5) 灰 | .5 | :13 |
DEFAULT_NIGHT |
Squares |
(.5, .5, 1f) 偏蓝 | .3 | :14 |
DEFAULT_UNDERGROUND |
Squares |
(.5, .5, .5) 灰 | .3 | :15 |
夜间规格把蓝色分量提到 1f 而 alpha 降到 .3——夜间网格偏蓝且更淡,与地图的夜间色调一致。
GridSpec 的数据与渲染
GridSpec(GridSpec.java:21)是不可变值对象,4 个 final 分量字段(red / green / blue / alpha,:25-28)加一个 final Style style(:24)。两个构造器:接受 Color 对象(:33)或直接接受 4 个 float(:52)。
渲染相关的实例方法:
| 方法 | 作用 | 源码 |
|---|---|---|
beginTexture(int textureWrap, float mapAlpha) |
开始生成网格贴图 | :72 |
finishTexture() |
完成并缓存 | :96 |
getTexture() |
取 TextureImpl |
:86 |
clone() |
深拷贝 | :91 |
getColor() / getColorX() / getColorY() |
基础色 / X 轴色 / Y 轴色 | :102、:107、:112 |
setColorCoords(int x, int y) |
设定 X/Y 轴的强调色 | :62 |
即网格可以给 X 与 Y 轴分别着色(坐标轴线通常要更醒目)。
GridSpecs 的按类型存取
GridSpecs 持有三种规格并按 MapType 索引:
| 方法 | 作用 | 源码 |
|---|---|---|
getSpec(MapType) |
取对应类型的规格 | :33 |
setSpec(MapType, GridSpec) |
设置 | :48 |
clone() |
深拷贝 | :74 |
updateFrom(GridSpecs other) |
从另一组覆盖 | :79 |
它作为 CoreProperties.gridSpecs(非 @Config 字段,CoreProperties.java:143)持久化在 journeymap.core.config 中。
GridRenderer
GridRenderer(GridRenderer.java:42)负责实际绘制网格,关键方法:
| 方法 | 作用 | 源码 |
|---|---|---|
setViewPort(Rectangle2D.Double) |
设置视口 | :114 |
move(deltaBlockX, deltaBlockZ) |
移动视图 | :141 |
center() / center(MapType, blockX, blockZ, zoom) |
居中到指定坐标 | :146、:189 |
updateTiles(mapType, zoom, highQuality, width, height, fullUpdate, xOffset, yOffset) |
更新切片 | :233 |
hasUnloadedTile() / hasUnloadedTile(boolean preview) |
是否还有未加载切片 | :151、:172 |
getBlockUnderMouse(mouseX, mouseY, screenWidth, screenHeight) |
鼠标所指方块 | :325 |
getCenterPixelOffset() |
中心像素偏移 | :320 |
setEnabled(boolean) |
静态开关 | :105 |
GridRenderer 还带一套静态调试消息接口:addDebugMessage(key, message)(:85)、removeDebugMessage(key, message)(:90)、clearDebugMessages()(95)。
数值
| 数值名 | 值 |
|---|---|
| 网格样式数 | 3 |
| 默认规格数 | 3(Day / Night / Underground) |
GridSpec 的 final 字段数 |
5(style + RGBA) |
GridSpec 构造器数 |
2 |
| 默认网格 alpha(Day / Night / Underground) | 0.5 / 0.3 / 0.3 |
| 夜间默认网格蓝色分量 | 1.0f(其余为 0.5f) |
GridRenderer 静态开关 |
setEnabled(boolean) |
| 轴向独立着色 | 支持(getColorX() / getColorY()) |
交互
| 触发 | 行为 |
|---|---|
| 从 Options Manager 打开网格编辑器 | UIManager.openGridEditor() |
| 选择地图类型(昼/夜/地下) | 编辑对应的 GridSpec |
| 切换样式 | 在 Squares / Dots / Checkers 间选择,贴图随之更换 |
| 调整颜色 / alpha | 立即重绘网格预览 |
| 关闭编辑器 | onGuiClosed()(GridEditor.java:464)写回 CoreProperties.gridSpecs |
| 地图缩放 | Fullscreen 调 gridRenderer.setZoom(...)(Fullscreen.java:717) |
showGrid 关闭 |
网格整体不显示(见 地图显示选项) |
相关条目
- Options Manager - 网格编辑器的上层界面
- 全屏地图 - 网格的实际使用场景
- 切片与网格渲染 -
GridRenderer与切片的关系 - 地图显示选项 -
showGrid开关与gridSpecs所在类 - 核心选项 -
gridSpecs作为非配置字段持久化