商品、选择与动作:道具架构
所有出售或施加自有商品的牌桌都遵循这份约定。它已在扑克头构筑桌(chaos_blackjack/poker_head/)实现;J-54 契约与经典道具插件仍走旧路径,迁移列为计划中的可选工作。
目标与分层
新增一件商品应只需一行目录加一个小处理器,不在控制器或 GUI 中加分支。GUI 与 Agent 展示同一组合法动作和相同的不可用原因;选择在确认前不改变任何状态;公开视图只包含牌桌上玩家能看到的信息。经典桌、J-54 与无模式 --chaos 保持原样。
自下而上依次是:ProductDef 目录(名称、类型、使用阶段和目标,所有数值都在平衡配置中);持有层(Holdings 记录消耗品及其实际买价,Loadout 记录核心与已装备永久商品,Ledger 记录现金入账与未到期合同);被动效果与主动道具处理器;待定选择;控制器作为唯一入口。效果只实现固定钩子列表中需要的部分(爆牌线、牌值、点数识别、天然、结算、投降比例、价格等),按核心、按格位顺序的永久商品、本轮准备效果的固定顺序叠加;处理器只能通过受限的上下文对象改变本回合。
选择、动作与视图
需要决定的命令会提出一个 Choice 并直接返回,不改变状态;待定期间只能选择、(允许时)取消或存档,选择随存档保存。GameController.moves() 是唯一的合法性来源:商店按钮、道具槽、选择按钮和 Agent 的合法动作都读取它,并有测试保证 GUI 与动作列表一致。视图提供 moves、choice 和冻结的牌桌公开快照,测试确认不会泄露未发出的牌或私有理财结果。
扩展与存档
文档列出新增消耗品、永久商品、核心、金融产品、牌桌动作、非资金目标、面板或提问各需要做什么,并说明扑克头的环境规则同样是由离线荷官处理的数据。所有对象带版本存档;随机抽取使用按名称与计数播种的独立序列,购物、刷新、存档和读档不会改变发牌或私有结果。当前商品见道具。