全屏地图
基本信息
| 属性 | 值 |
|---|---|
| 界面类 | journeymap.client.ui.fullscreen.Fullscreen(Fullscreen.java:67),继承 JmUI |
| 打开方式 | UIManager.openFullscreenMap() / openFullscreenMap(Waypoint)(UIManager.java:172、:178) |
| 打开热键 | J(KB_MAP,见 热键绑定) |
| 配置文件 | journeymap.fullmap.config(FullMapProperties,name = "fullmap") |
| 主题工具栏数 | 3 条(mapTypeToolbar、optionsToolbar、menuToolbar、zoomToolbar) |
| 主题按钮数 | 8 |
| 网格渲染器 | journeymap.client.render.map.GridRenderer |
功能
全屏地图是 JourneyMap 的主界面:一张可缩放、可切图型、可开路点/选项/主题的完整世界地图。它不是 GuiContainer(无物品槽),而是自绘的 JmUI。
8 个主题按钮
全部在 Fullscreen.initGui() 中以 new ThemeButton(theme, 语言键, 图标名) 构造(Fullscreen.java:366-485):
| 按钮 | 语言键 | 图标 | 作用 | 源码 |
|---|---|---|---|---|
buttonFollow |
jm.fullscreen.follow |
follow |
跟随玩家 | :366 |
buttonZoomIn |
jm.fullscreen.zoom_in |
zoomin |
放大 | :378 |
buttonZoomOut |
jm.fullscreen.zoom_out |
zoomout |
缩小 | :391 |
buttonWaypointManager |
jm.waypoint.waypoints |
waypoints |
打开路点管理器 | :404 |
buttonTheme |
jm.common.ui_theme |
theme |
切换主题 | :417 |
buttonOptions |
jm.common.options |
options |
打开 Options Manager | :437 |
buttonActions |
jm.common.actions |
actions |
打开操作菜单 | :457 |
buttonClose |
jm.common.close |
close |
关闭 | :485 |
缩放
缩放级别存放在 fullMapProperties.zoomLevel(MapProperties.java:57,非 @Config 字段),渲染时换算为方块边长:
int blockSize = (int) Math.pow(2, fullMapProperties.zoomLevel.get()); // Fullscreen.java:695
两个缩放按钮的启用条件由当前级别决定(:379、:392):
buttonZoomIn:zoomLevel < state.maxZoombuttonZoomOut:zoomLevel > state.minZoom
缩放变化后立即 gridRenderer.setZoom(...) 重建网格(:717),界面初始化时也做一次(:108)。
工具栏布局
zoomToolbar 由 follow / zoomIn / zoomOut 三个按钮组成(:539),布局为:
zoomToolbar.setLayout(ButtonList.Layout.Vertical, ButtonList.Direction.LeftToRight); // :540
随后 zoomToolbar.layoutCenteredVertical(zoomToolbar.getHMargin(), height / 2, true, padding) 垂直居中(:575)。buttonClose 定位在 width - zoomToolbar.getHMargin() 处(:582),buttonAlert 在其下方(:583)。
叠加工具栏
Fullscreen 声明了 4 条工具栏字段(:86):
ThemeToolbar mapTypeToolbar, optionsToolbar, menuToolbar, zoomToolbar;
注释 //, northEastToolbar;(:86)说明原计划还有一条"东北角工具栏",已注释掉。
图层
FullMapProperties 继承 InGameMapProperties + MapProperties 共 20 项图层开关(见 地图显示选项),另有自己的 preferredMapType(默认 day)。
数值
| 数值名 | 值 |
|---|---|
| 主题按钮数 | 8 |
| 工具栏字段数 | 4(1 条已注释) |
| 缩放换算 | blockSize = 2 ^ zoomLevel |
| 字体缩放 | Unicode 字体开启时 fontScale 自动设为 2(FullMapProperties.java:29-32) |
| 配置类别 | FullMap(1 项:themeName) |
继承的 @Config 项 |
8(InGameMap)+ 11(MapProperties) |
交互
| 触发 | 行为 |
|---|---|
按 J |
打开全屏地图;已在全屏地图中则 UIManager.closeAll()(KeyEventHandler.java:143-151) |
已有其它界面时按 J |
不打开(要求 currentScreen == null,:141) |
| 点击 zoomIn / zoomOut | 增减 zoomLevel 并重建网格;到边界时按钮置灰 |
| 点击 follow | 地图跟随玩家位置 |
| 点击 waypoints | UIManager.openWaypointManager() |
| 点击 options | UIManager.openOptionsManager() |
| 点击 theme | 切换 themeName 配置 |
| 点击 actions | UIManager.openMapActions() → FullscreenActions 对话框(13 个按钮) |
| 点击 close | 关闭界面 |
| 关闭时 | onGuiClosed() 保存 zoomLevel 等状态 |
快捷键帮助
FullscreenHotkeysHelp(ui/dialog/FullscreenHotkeysHelp.java)是一个纯文字对话框,逐行调用 drawHelpStrings(语言键, 按键名, x, y += 12) 展示绑定(:97-100)。它复用 key.journeymap.map_toggle_alt(“Show / Hide Fullscreen Map”)作为 KB_MAP 的显示标签。
由 UIManager.openMapHotkeyHelp(JmUI)(UIManager.java:195)打开。