Appearance
RFM中控面板GUI
文档版本:基于 2026-06-01 代码分析
面向对象:开发者与高级管理员 | 本文档描述中控面板的实现技术细节,普通管理员参考中控面板使用指南即可。
概述
RFM中控面板(RfmManagerScreen)是管理员的核心操作界面,提供 6 个标签页用于管理游戏全部环节。面板占屏幕 72%×70%,标签栏在顶部,内容区采用百分比布局。通过快捷键或 /nfa rfm manager 指令打开。
核心概念
6 标签页
| 索引 | 常量 | 标签文字 | 功能 |
|---|---|---|---|
| 0 | TAB_CONTROL | 游戏控制 | 设置总时长、开始/暂停/继续/终止、赏金比率(含输入框+5操作按钮+赏金滑块) |
| 1 | TAB_PLAYER_MANAGE | 玩家管理 | 搜索玩家、设置身份/状态/昵称 |
| 2 | TAB_NOTICE | 通知管理 | 创建/编辑/发送通知、绑定方块 |
| 3 | TAB_TRIGGER | 触发器 | 管理红石触发器配置 |
| 4 | TAB_COORDINATE | 坐标管理 | 坐标点增删改查/传送 |
| 5 | TAB_TRAITOR | 叛节者管理 | 设置叛节者+自定义赏金 |
架构设计
布局系统
mermaid
graph TB
subgraph Screen["屏幕 1920x1080"]
Panel["面板 72%x70% 居中"]
subgraph Panel_Layout["面板内部(百分比布局,以面板尺寸为参照)"]
TabBar["标签栏:标签高度5%,每标签宽度8%<br/>6个标签水平排列"]
Page["内容区:96%×90%<br/>偏移标签栏下方(top_offset 8%)"]
end
Panel --> TabBar
Panel --> Page打开流程
mermaid
sequenceDiagram
participant Player as 管理员
participant Key as 快捷键
participant Panel as ClientRfmPanelEvents
participant Server as 服务端
participant Screen as RfmManagerScreen
Player->>Key: 按下快捷键
Key->>Panel: consumeOpenRequested()
Panel->>Server: RequestOpenRfmManagerPanelPayload
Server->>Screen: OpenRfmManagerPanelPayload(initialTab)
Screen->>Screen: 设置currentTab=initialTab
Screen->>Screen: 请求同步对应标签页数据关键文件
| 文件 | 说明 |
|---|---|
com/chenxi/chenxi_rfm/client/screen/RfmManagerScreen.java | 中控面板主类(Screen) |
com/chenxi/chenxi_rfm/client/screen/rfm/RfmManagerScreenLayout.java | 面板+标签页布局计算 |
com/chenxi/chenxi_rfm/client/screen/rfm/RfmManagerControlLayout.java | 控制页控件布局 |
com/chenxi/chenxi_rfm/client/screen/rfm/RfmManagerPlayerManagePage.java | 玩家管理标签页 |
com/chenxi/chenxi_rfm/client/screen/rfm/RfmManagerNoticePage.java | 通知管理标签页 |
com/chenxi/chenxi_rfm/client/screen/rfm/RfmManagerTriggerPage.java | 触发器标签页 |
com/chenxi/chenxi_rfm/client/screen/rfm/RfmManagerCoordinatePage.java | 坐标管理标签页 |
com/chenxi/chenxi_rfm/client/screen/rfm/RfmManagerTraitorPage.java | 叛节者管理标签页 |
com/chenxi/chenxi_rfm/client/ui/rfm/RfmManagerButtonRenderer.java | 按钮渲染(九宫格) |
com/chenxi/chenxi_rfm/client/ui/rfm/RfmManagerInputBox.java | 单行文本输入框 |
com/chenxi/chenxi_rfm/client/screen/rfm/RfmMultilineInputBox.java | 多行文本输入框 |
关键流程
标签页切换
- 点击标签栏切换
currentTab - 每个标签页在
init()时发送对应的Request*Payload获取数据 - 服务端返回
Sync*Payload,客户端写入*ClientState
控件组件
RfmManagerButtonRenderer:使用PHONE_WIDGETS图集九宫格渲染,支持 active/hovered/disabled 三种状态RfmManagerInputBox:单行输入框,支持 hint、光标、IME 桥接RfmMultilineInputBox:多行输入框,支持换行、选中、滚动偏移
控制页控件清单
游戏控制标签页包含以下可操作控件:
- 总时长输入框:
RfmManagerInputBox,4 位数字限制,单位为分钟 - 5 个操作按钮:设置、开始、暂停、继续、终止——均通过
RfmManagerButtonRenderer渲染,根据游戏状态动态切换 active/hovered/disabled - 赏金比率:
coinControlActive控制显隐,用于调整逃走币比率
各标签页数据同步
| 标签页 | 请求Payload | 响应Payload | 客户端State |
|---|---|---|---|
| 游戏控制 | RequestRfmGameStatePayload | SyncRfmGameStatePayload | RfmGameClientState |
| 玩家管理 | RequestRfmManagerPlayersPayload | SyncRfmManagerPlayersPayload | RfmPlayerManageClientState |
| 通知管理 | RequestRfmNoticesPayload + RequestRfmNoticeTargetsPayload | SyncRfmNoticesPayload + SyncRfmNoticeTargetsPayload | RfmNoticeClientState + RfmNoticeTargetClientState |
| 触发器 | RequestRfmTriggersPayload | SyncRfmTriggersPayload | RfmTriggerClientState |
| 坐标管理 | RequestRfmCoordinatesPayload | SyncRfmCoordinatesPayload | RfmCoordinateClientState |
| 叛节者管理 | 复用玩家管理数据 | — | — |
注意事项
- 面板基于 1920x1080 基准分辨率设计,低分辨率可能溢出
- 仅 GAME_ADMIN 以上权限可打开中控面板
- 玩家管理中的身份设置操作为写操作,内部二次检查 MASTER_ADMIN
- 通知标签页支持"绑定到方块"上下文(通过右键 notice_sender 打开时自动选中)
- 触发器标签页的"剩余时间"输入为分钟+秒分开输入