Skip to content

RFM中控面板GUI

文档版本:基于 2026-06-01 代码分析

面向对象:开发者与高级管理员 | 本文档描述中控面板的实现技术细节,普通管理员参考中控面板使用指南即可。

概述

RFM中控面板(RfmManagerScreen)是管理员的核心操作界面,提供 6 个标签页用于管理游戏全部环节。面板占屏幕 72%×70%,标签栏在顶部,内容区采用百分比布局。通过快捷键或 /nfa rfm manager 指令打开。


核心概念

6 标签页

索引常量标签文字功能
0TAB_CONTROL游戏控制设置总时长、开始/暂停/继续/终止、赏金比率(含输入框+5操作按钮+赏金滑块)
1TAB_PLAYER_MANAGE玩家管理搜索玩家、设置身份/状态/昵称
2TAB_NOTICE通知管理创建/编辑/发送通知、绑定方块
3TAB_TRIGGER触发器管理红石触发器配置
4TAB_COORDINATE坐标管理坐标点增删改查/传送
5TAB_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
游戏控制RequestRfmGameStatePayloadSyncRfmGameStatePayloadRfmGameClientState
玩家管理RequestRfmManagerPlayersPayloadSyncRfmManagerPlayersPayloadRfmPlayerManageClientState
通知管理RequestRfmNoticesPayload + RequestRfmNoticeTargetsPayloadSyncRfmNoticesPayload + SyncRfmNoticeTargetsPayloadRfmNoticeClientState + RfmNoticeTargetClientState
触发器RequestRfmTriggersPayloadSyncRfmTriggersPayloadRfmTriggerClientState
坐标管理RequestRfmCoordinatesPayloadSyncRfmCoordinatesPayloadRfmCoordinateClientState
叛节者管理复用玩家管理数据

注意事项

  1. 面板基于 1920x1080 基准分辨率设计,低分辨率可能溢出
  2. 仅 GAME_ADMIN 以上权限可打开中控面板
  3. 玩家管理中的身份设置操作为写操作,内部二次检查 MASTER_ADMIN
  4. 通知标签页支持"绑定到方块"上下文(通过右键 notice_sender 打开时自动选中)
  5. 触发器标签页的"剩余时间"输入为分钟+秒分开输入

相关文档