Skip to content

GUI 界面

EmakiForge 有两套 GUI 界面:锻造界面(玩家用来锻造)、配方书(浏览可用配方)。所有 GUI 配置文件放在 gui/ 目录下。

锻造界面

forge_gui.yml 布局

锻造界面是一个 5 行(45 格)的箱子界面:

行 1: [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]
行 2: [  ] [BP] [BP] [  ] [CP] [  ] [RM] [RM] [  ]
行 3: [  ] [BP] [BP] [  ] [CP] [  ] [RM] [RM] [  ]
行 4: [  ] [OM] [OM] [OM] [  ] [  ] [  ] [CF] [  ]
行 5: [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]

BP = blueprint_inputs    图纸输入槽
CP = capacity_display    容量显示槽
RM = required_materials  必选材料槽
OM = optional_materials  可选材料槽
CF = confirm             确认按钮
槽位区域槽位编号说明
blueprint_inputs10, 11, 19, 20放图纸的地方。配方要求什么图纸,就在这里放
capacity_display13, 22显示当前已用容量和最大容量
required_materials15, 16, 24, 25必选材料区域,这些材料必须放齐才能锻造
optional_materials28, 29, 30可选材料区域,放了有额外效果,不放也能锻造
confirm34确认锻造按钮,所有条件满足后点击执行锻造

配方书界面

recipe_book.yml 布局

配方书是一个 6 行(54 格)的箱子界面,用来展示玩家有权限查看的所有配方:

行 1: [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]
行 2: [RL] [RL] [RL] [RL] [RL] [RL] [RL] [  ] [  ]
行 3: [RL] [RL] [RL] [RL] [RL] [RL] [RL] [  ] [  ]
行 4: [RL] [RL] [RL] [RL] [RL] [RL] [RL] [  ] [  ]
行 5: [RL] [RL] [RL] [RL] [RL] [RL] [RL] [  ] [  ]
行 6: [  ] [  ] [  ] [PV] [  ] [NX] [  ] [  ] [  ]

RL = recipe_list   配方列表槽位
PV = prev_page     上一页按钮
NX = next_page     下一页按钮
槽位区域槽位编号说明
recipe_list10-16, 19-25, 28-34, 37-43配方展示区域,每页最多 28 个配方
prev_page48上一页
next_page50下一页

完整锻造执行流程

从玩家点击确认按钮到锻造完成,系统内部经历了这些步骤:

玩家点击确认按钮 (confirm)

canForge — 前置检查
    ├── 图纸是否匹配 blueprint_requirements
    ├── 必选材料是否齐全
    ├── 可选材料数量是否超过 optional_material_limit
    ├── 材料总容量是否超过 forge_capacity
    ├── 条件是否满足(condition_type + conditions)
    └── 权限是否通过
    ├── 任一检查失败 → 提示错误,中止
    └── 全部通过 ↓

prepareForge — 准备锻造
    ├── 收集所有材料的 effects
    ├── 汇总 stat_contribution
    ├── 汇总 quality_modify
    ├── 汇总 capacity_bonus
    └── 汇总 structured_presentation

execute — 执行锻造
    ├── 执行 action.pre 动作
    ├── 确定品质等级(走品质计算流程)
    ├── 把品质倍率乘到所有属性值上
    └── 消耗材料和图纸

build snapshot — 构建快照
    ├── ForgeLayerSnapshotBuilder 构建 layer snapshot
    ├── 写入 stat 数据
    ├── 写入 attribute 数据
    └── 写入 structured_presentation 数据

preview — 预览产物
    └── 生成输出物品并应用 meta_actions

give — 给予产物
    ├── 将产物放入玩家背包
    ├── 执行 action.success 动作
    └── 执行品质动作(如有)

record — 记录审计
    ├── 写入玩家数据文件
    └── 更新保底计数器

提示

整个锻造流程是同步执行的,保证物品操作的原子性。如果中途出了异常,系统会回滚已消耗的材料,不会出现"材料扣了但没出东西"的情况。

Released under the GPL-3.0 License