全屏地图

基本信息

属性 值
界面类 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.maxZoom
  • buttonZoomOut: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)打开。

相关条目