Repository navigation
把「消耗热量」的判定从 fitness_band 物品 id 改成 CALORIES_SPENT 旗标 - #1252
Conversation
fitness_band 的「消耗」行原来写死在 itype_fitness_band 上,模组自制的追踪器无法显示。 改为 worn_with_flag( CALORIES_SPENT ),并在 flags.json 注册旗标、给 fitness_band 补上该旗标。 修复 BreezeDevTeam#1249
🤖 微风自动审查本次 PR 共修改 3 个文件,新增 11 行,删除 6 行。 变更范围: C++ 核心代码、本体游戏数据 自动风险提示:
建议测试内容:
这是规则型自动审查,会依据本次 PR 的实际变更范围生成风险提示和测试建议,不假定 PR 的来源或用途,也不替代人工代码审查。每次推送后会自动更新这条摘要。 |
Walkthrough
Merge Risk:
|
这个 PR 做什么
把 E(eat/consume)菜单顶部「消耗:今日/昨日 X kcal」的判定,从写死的物品 id
fitness_band改成物品旗标CALORIES_SPENT,让模组自制的追踪器/手环也能显示这一行。修复 #1249
改动
src/game_inventory.cppjson_flag_CALORIES_SPENT;has_fitness_band(you.is_wearing( itype_fitness_band ))改为has_calories_spent_tracker(you.worn_with_flag( json_flag_CALORIES_SPENT ));删掉因此不再使用的itype_fitness_band声明data/json/flags.jsonCALORIES_SPENT的 json_flag 定义data/json/items/tool_armor.jsonfitness_band的 flags 加上CALORIES_SPENT语义等价:
Character::is_wearing(itype_id)走worn.is_worn(),worn_with_flag(flag_id)走outfit::worn_with_flag(),两者都只看穿在身上的物品(不看背包/手持),所以原版手环表现不变。效果
fitness_band:行为不变,「消耗」行照常显示。copy-fromfitness_band的追踪器自动继承该旗标;自建物品只要加"CALORIES_SPENT",穿戴后 E 菜单就显示「消耗」行,不必再覆盖原版 id。CALORIES_INTAKE的物品不受影响(仍只有精确摄入数值,没有「消耗」行)。备选方案
如果更希望不新增旗标、直接复用
CALORIES_INTAKE,把json_flag_CALORIES_SPENT换成json_flag_CALORIES_INTAKE即可(一行),代价是拿着智能手机也会多出「消耗」行。这里按 issue 描述的最小改动方案实现。验证情况
fitness_band→ E 菜单显示「消耗」行(回归);CALORIES_SPENT的模组手表 → 显示「消耗」行(新能力);CALORIES_INTAKE)→ 不显示「消耗」行。worn_with_flag的数据层测试。Summary by CodeRabbit