chore(代码卫生): 头注存量清偿批——82 文件按两类白名单改写为 ## 文档注释载体
按 code-conventions §1.4.1 第三轮定稿执行:core 22+schemas 18+presentation 根 14+views 28,全部头注 #→##、删日期/变更叙事/GDD 与架构反向链接/字段与域清单/机制描述,保留职责摘要+真实使用约束(防事故禁令/单一入口/信号契约每信号一行)。main.gd 31→5 行、save_manager 45→5 行、adventure_runner 37→5 行为最大单件。子代理分模块执行(波一 core+schemas、波二 presentation+views,并发≤2)。验收=tools/verify_comment_only_change.py 逐字节校验(82 文件头注区外逐行一致=零行为变更)+audit_file_headers 全绿;纯注释批免冒烟(先例 5843270)
This commit is contained in:
1 parent
1c034f555f
commit
9a72394652
83 files changed
+348
-916
No files matched your search
@@ -1,9 +1,8 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# Date: 2026-09-10
|
||||
# 行动经济:被动账本(AP 硬重置 / 统一价目 / 三路径结束仲裁 cleared > stopped > ap_exhausted /
|
||||
# RAP 池战斗域 / 双发射源之 stopped 直发)。相位域 = {Idle, Active, Waiting}。
|
||||
# 实现 GDD:design/gdd/systems/排雷循环/行动经济.md(系统 ID A3·行动经济——registry 追溯锚,命名规范见 CLAUDE.md)
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 行动经济被动账本:AP 统一价目扣费、轮末三路径仲裁(cleared > stopped > ap_exhausted)与战斗域 RAP 池(垂直切片验证:一场完整战斗逐行归因)。
|
||||
## 相位/AP/RAP 只读经 getter,写入只经 request_*/notify_*/try_spend 通道——相位守卫拒绝零副作用。
|
||||
## 相位词表 "Idle"/"Active"/"Waiting" 是 presentation_snapshot 外部契约,禁改拼写。
|
||||
## round_end 双发射源:stopped 路径由本类 round_end_stopped 直发,棋盘路径由编排器组包 round_end_board——订阅方两源并听。
|
||||
class_name ActionEconomy
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,40 +1,8 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 三关连探冒险(地精洞窟 → 幽暗地域 → 灰矮人矿城)能否以一条命走完——
|
||||
# 主种子恰一次注入、生命/GP/加算区跨关同账、大奖励非末关恰兑付一次、三结局摘要五件事成立(P0)
|
||||
# Date: 2026-09-21(冒险结构实现批——设计权威 design/gdd/systems/冒险循环/冒险结构.md)
|
||||
# 冒险结构编排器(Core 层零 UI 依赖——headless 可跑完整冒险):一局的关卡序列、生命账本、GP 冒险
|
||||
# 账本、统一冒险加算区、关卡大奖励、三结局结算与主种子接线的唯一所有者。
|
||||
#
|
||||
# 接口契约四件套落点(冒险结构.md「与关卡节点地图的边界」——本类是正式侧承载):
|
||||
# ① 开始关卡 = start_level_external(载荷 = 关卡序号 + 当前生命 + 生效上限——生命经共享账本交接);
|
||||
# ② 战斗结果上报 = runner 经共享账本属性直写(LevelRunner._on_battle_finished 回写 hero_hp 到
|
||||
# _ledger——零直调战斗域,战后生命终值随账本回流本类);
|
||||
# ③ 治疗封顶回报 = apply_rest(恢复点节点兑付时 LevelRunner 经 _rest_handler 回调——按比例回血并
|
||||
# 封顶的执行归本类);
|
||||
# ④ 关卡结束 = _on_level_finished(LevelRunner.level_finished 到达——结果 + 生命终值 + 节点位置)。
|
||||
#
|
||||
# 职责切分:主种子注入恰一次归本类(start_adventure 调 rng.new_adventure 全冒险恰一次;
|
||||
# LevelRunner 冒险模式不重播种);生命账本归本类(共享 _ledger);恢复兑付执行归本类(_rest_handler);
|
||||
# 收束先清库后宣布——战斗结束 retire_mapping + despawn_all 先于 battle_finished 即事实清库,
|
||||
# 不另设空接口;失败结算归本类(LevelRunner 只上报结果)。
|
||||
#
|
||||
# 收束次序登记(大奖励兑付时点——冒险结构.md「关卡大奖励」):关卡节点地图先清库、后宣布关卡
|
||||
# 结束(次序不可换);大奖励在宣布之后、下一关开始之前兑付——本类 _on_level_finished 兑付、
|
||||
# continue_to_next_level 开始下一关,两步间为呈现层大奖励屏(冒烟/自动路径立即确认)。
|
||||
# 结算受理只算一次(契约):state != "running" 的关卡结束宣布与放弃请求一律拒绝并留诊断,
|
||||
# 账本与摘要零变化。
|
||||
# 入口选路停点:每关开始 = 选路停点——_start_current_level 以 defer_entry 起关,level_started 之后才
|
||||
# present_entry_choice(信号顺序契约:呈现层先重取 runner 实例,选路口才不会被空防御丢弃);
|
||||
# pick 入口候选走同一 _enter_node(entry),呈现零 RNG 消耗;关卡切换(continue_to_next_level)后
|
||||
# 新 LevelRunner 实例重新走 defer 流程;abandon 在入口停点天然非战斗期(current_battle 为空)
|
||||
# ——受理语义与选路停点一致。
|
||||
# 纪律:S6——连 runner 信号一律 _forward_* 方法 Callable(禁 lambda 捕获 self 成环);
|
||||
# Core 层禁 UI 引用;数值零字面量——level_clear_hp_bonus / keystone_per_level 只读 db.adventure,
|
||||
# 基础上限只读 db.hero。
|
||||
# 断点续玩:save_manager 经 set_save_manager 注入(缺省 null = 不写断点——模拟/
|
||||
# 冒烟零触达零扰动);停点快照挂 choices_presented 转发点(选路停点=唯一可恢复停点形态,战斗中
|
||||
# 不存);三结局 _settle 清断点;resume_adventure 经 rng.restore_adventure 回填「主种子+计数器」
|
||||
# ——续玩从断点号位精确续接原随机时间线。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 冒险结构编排器:三关序列、生命/GP 账本、三选一停点与三结局结算唯一所有者,headless 可跑完整冒险(垂直切片验证:一条命走完三关)。
|
||||
## Core 层禁 UI 引用;数值零字面量只读 db;core↔core 连信号一律方法 Callable,禁 lambda 捕获 self(RefCounted 成环)。
|
||||
## 主种子恰一次注入归本类(LevelRunner 不重播种);set_save_manager 缺省 null = 断点面整体静默(模拟/冒烟零扰动)。
|
||||
## 呈现层须在 level_started 后重取 runner()(每关新建实例)——先重取再开选路口,否则被空防御丢弃。
|
||||
class_name AdventureRunner
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 同调位求值服务(槽位数量=树上同调位节点点亮数;无谓词表判定链——
|
||||
# attunement_growth.tres 与表访问器不存在;boss_kill_count/clear_count 计数域保留——各有非槽位硬消费)。
|
||||
# 纯函数零副作用;attune=off 纪律:零 await、零 RNG、零写副作用。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 同调位求值服务:槽位数与装配参数的纯函数读数面(垂直切片验证:营地装配同调件在战斗内生效)。
|
||||
## 零 await、零 RNG、零写副作用——静态纯函数同输入恒同输出,呈现期可安全重复求值。
|
||||
class_name Attunement
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,26 +1,8 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# Date: 2026-09-10
|
||||
# 战斗结算编排中枢:轮次生命周期唯一 owner · 五段结算(授予→增益/减益→战斗→衰减→判定)·
|
||||
# 授予段极性路由(「动作 × 格型」矩阵:开安全格/标中旗
|
||||
# = 正向,开雷格/标错旗 = 负向;结算队列 + 抵消过滤——标旗后被撤旗以轮末在场旗为基线不判)·
|
||||
# 10 类行协议可回放步骤流(零 await;随机消费三处皆封闭流——开战遭遇骰〔初始化随机〕+ 技能摇号
|
||||
# behavior_roll〔回合内、开轮时点、步骤流之外〕+ 护甲等级掷点〔回合内、
|
||||
# 步骤流之内〕;同种子同输入逐位复现)· 高光双落(完美排雷 ×2 / 标中旗 highlight)·
|
||||
# Waiting 相位结算触发(不依赖事件到达序)。
|
||||
# GP 型兑付:授予段极性路由含 GP(effect_id gp_gain/gp_loss → 战斗内缓冲 escrow 记账,不入钱包
|
||||
# 不入增益容器);战斗结束分支掷 gp_drop 封闭流(每战斗末恰一 scope)出
|
||||
# gp_dropped = 掷定 + level_gp_bonus + escrow 随 battle_finished 上抛——战斗域零 GP 状态持久。
|
||||
# 伤害管线:伤害兑付全部收口 DamageController 单点管线——本类六调用点(主角先手/敌方伤害技/
|
||||
# 棋盘克制直伤/群伤/反噬/地形变异)为开单点(流程决定何时开单给谁开单;单据怎么算归控制器)。
|
||||
# 结账时机开关在控制器 policy:IMMEDIATE(开单即结)/ SEGMENT(攒批到段界 flush:战斗段尾统一兑现)。
|
||||
# 地图伤害殿后:授予段不当场兑付任何伤害——全部伤害形态单据经 _submit 暂存闸入 _deferred_board
|
||||
# (保授予段事件序),战斗段「主角先手→逐敌还手」后补提交统一结账;主角死于敌方还手 → 暂存单
|
||||
# 整体不兑,逐单留「未生效(主角已倒下)」行(forfeit=hero_down);
|
||||
# 死亡事件 = 单位容器 unit_died(单位自行宣布)→ 控制器作废该敌未结单据〔死亡即不动手〕/ 主角死终止兑付。
|
||||
# 切片登记:① 事件总线载体 = 直连信号(已定)② Waiting 相位无刷新通道
|
||||
# (仅 Active 挖掘期受理)③ 效果行协议 = 授予段逐 grant 行 + 增益/减益段续存实例组合行。
|
||||
# 实现 GDD:design/gdd/systems/战斗循环/战斗结算.md(registry 追溯锚)
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 战斗结算编排中枢:轮次生命周期唯一 owner,五段结算(授予→增益/减益→战斗→衰减→判定)与明细行协议发射(垂直切片验证:一场完整战斗逐行归因)。
|
||||
## 零 await;随机只经 rng 封闭流(encounter/behavior_roll/armor_roll/gp_drop)——同种子同输入逐位复现。
|
||||
## 呈现层读取唯一出口 = presentation_snapshot()/diagnostic_snapshot(),禁链式穿透内部协作对象。
|
||||
## 伤害只向 DamageController 开单(何时开单归编排、怎么算归控制器);刷新唯一通道 player_request_refresh,禁 RAP 满自动刷。
|
||||
class_name BattleOrchestrator
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# Date: 2026-09-10
|
||||
# 棋盘产物数据契约(排雷玩法消费;生成后不可变——排雷玩法持快照即持活引用,生成器不再触碰)。
|
||||
# 实现 GDD:design/gdd/systems/排雷循环/棋盘生成.md(系统 ID A1·棋盘生成——registry 追溯锚,命名规范见 CLAUDE.md)
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 棋盘产物数据契约:生成器产出、排雷玩法消费的格子事实集(垂直切片验证:战斗内棋盘事实逐行归因)。
|
||||
## 生成后不可变——消费方持引用只读,禁原地改写;跨类「棋盘事实不可变」约定由本不可变性承载。
|
||||
class_name BoardData
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# Date: 2026-09-10
|
||||
# 确定性棋盘生成器:五阶段管线(参数→布雷→变异布置→生成-验证→产出)+ F1 可推理率度量
|
||||
# (single_subset 求解器)+ F5 验收算子(达标即出/接受最优/接受最不坏)。
|
||||
# 切片裁剪登记:黄金向量回归套件与 F4 批量工具不做(难度曲线与Boss 调参期工具域)。
|
||||
# 实现 GDD:design/gdd/systems/排雷循环/棋盘生成.md(系统 ID A1·棋盘生成——registry 追溯锚,命名规范见 CLAUDE.md)
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 确定性棋盘生成器:生成-验证循环出图,不达标走接受最优/最不坏诚实降级(垂直切片验证:每张图可推理可归因)。
|
||||
## 只消费传入的单条 rng 流(重试共用,attempt 边界非 scope 事件)——同流同参逐位复现。
|
||||
## generate/legality 的 db 参数鸭子型(不标类型)——冒烟测量面注入桩表依赖此形态,勿收紧签名。
|
||||
class_name BoardGenerator
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# Date: 2026-09-10
|
||||
# ConfigDB autoload(数据配置)——数值表单点访问入口(Rule 2)+ 校验双通道(Rule 6)+ R1 行解析。
|
||||
# 实现 GDD:design/gdd/systems/表现与支撑/数据配置.md(系统 ID D2·数据配置——registry 追溯锚,命名规范见 CLAUDE.md)
|
||||
# 切片注:headless --script 模式下由冒烟脚本显式实例化(数据配置 AC 前言);玩法代码禁止绕过本单点自建 load()。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 数值表单点访问入口:全部 .tres 表的加载、校验诊断与类型化访问器(垂直切片验证:改表即改玩法,数值零硬编码)。
|
||||
## 玩法代码禁止绕过本单点自建 load();消费面一律走访问器,禁直读行集。
|
||||
## headless --script 模式无 autoload——冒烟脚本显式实例化本类;加载失败 is_ready=false 加 fatal 旗,调用方须查。
|
||||
class_name ConfigDb
|
||||
extends Node
|
||||
|
||||
|
||||
@@ -1,13 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-10-02(ConfigDb 拆分——跨表校验协作类,自 config_db.gd 迁出)
|
||||
# 职责单一化(Rule 6 校验双通道的跨表一侧):_cross_validate 全域(悬空引用/池护栏/节点精确行/
|
||||
# 技能池构成)+ validate_skill_pool_links(冒烟直验独立入口)。ConfigDb autoload 门面保持——
|
||||
# load_tables 调用点与冒烟直验经门面同名方法,公有签名零变化。
|
||||
# 诊断通道注入:跨表校验的行级错误经 push_diag: Callable 外发(门面传方法引用 push_diag)——
|
||||
# 本类零 ConfigDb 依赖(无状态纯校验器,装载序上先于成员赋值执行的前提保持)。
|
||||
# 迁移注记:validate_skill_pool_links 的 status_table 显式入参纪律照抄(装载通道传 loaded 表,
|
||||
# 冒烟直验传门面 status_effects;null 时 side 守卫跳过)——返回错误列表不进诊断通道,消费面归调用方。
|
||||
# 实现 GDD:design/gdd/systems/表现与支撑/数据配置.md(系统 ID D2·数据配置——registry 追溯锚)
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 跨表校验器:悬空引用/池护栏/节点精确行/技能池构成——行级错误经注入的 push_diag Callable 外发(垂直切片验证:坏表加载期即拦)。
|
||||
## 无状态零 ConfigDb 依赖,传入 loaded 表集即可独立运行;返回错误列表不进诊断通道,消费归调用方。
|
||||
class_name ConfigDbCrossValidator
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,13 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-10-02(code-quality 修复批 T5——ConfigDb 拆分:R1 难度行解析协作类,自 config_db.gd 迁出)
|
||||
# 职责单一化(R1 解析域):resolve_board_gen / resolve_enemy_rowset / resolve_difficulty_modifiers
|
||||
# 及其私有算术(_resolve_progress / _ceil_key)与 R1 专属的告警去重注册表。ConfigDb autoload 门面
|
||||
# 保持——全部消费方(战斗结算/敌人系统/棋盘生成/呈现层/冒烟)经门面同名方法取数,公有签名零变化。
|
||||
# 诊断通道归门面:push_diag / _fatal 经 _db 引用回呼(协作类同仓内部通道——不另设公共出口,
|
||||
# 行为与拆分前逐位一致,含越域 Fatal 退出语义)。
|
||||
# 迁移注记:_warn_dedup 去重注册表随解析逻辑同迁(唯一消费方 = _resolve_progress)——
|
||||
# 门面 load_tables / reset_diagnostics 经 reset_warn_dedup() 同步清空,清空时点零变化。
|
||||
# 实现 GDD:design/gdd/systems/表现与支撑/数据配置.md(系统 ID D2·数据配置——registry 追溯锚)
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## R1 难度行解析协作类:进度坐标 ceil 取行、越域 Fatal、告警去重,由 ConfigDb 门面持有(垂直切片验证:数值缺行不静默)。
|
||||
## 非直调面——全部消费方经 ConfigDb 同名方法取数;数据面与诊断通道均经构造注入 Callable(类型环断根)。
|
||||
class_name ConfigDbResolver
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,27 +1,8 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-09-24
|
||||
# 伤害控制器:伤害单据唯一兑付管线。
|
||||
# 分工:五族伤害来源(主角攻击/敌方行动/棋盘克制直伤/棋盘群伤/反噬地形)的调用点只决定
|
||||
# 何时开单、给谁开单;本类决定一张单经过哪几步(掷点 → 折扣 → 暴击 → 克制点数 → 池乘区 →
|
||||
# 落地下限 → 交付)。
|
||||
# 设计要点:
|
||||
# ① 兑现时机双模式(结账时机开关):POLICY_IMMEDIATE(A——开单即结,回切位)/ POLICY_SEGMENT
|
||||
# (B——开单攒批、段界统一结账;流程在授予段尾与战斗段尾调 flush)。
|
||||
# 切换=改 policy 一个值,管线/单据/数据表零改动。
|
||||
# ② 目标 = 结账时刻照 target_rule 看现场解析(front_alive_enemy = 行主序最前存活敌 / hero /
|
||||
# all_alive_enemies)——开单时只写规则不冻结对象。
|
||||
# ③ 死亡事件由单位自行宣布(UnitContainer.apply_damage 归零 → unit_died 信号):怪死 = 队列中
|
||||
# 该敌为来源的未结单据作废(死亡即不动手——静默零行零 commit,同现行"不在存活序"口径);
|
||||
# 主角死 = _halted 终止(flush 余单作废;Game Over 仍归战斗编排器判定段既有 hp 读数路径)。
|
||||
# 单据栏目(九栏):kind(兑付配方,唯一分派键)/ source_class+origin_cell+round_index(行协议归因三件)/
|
||||
# display(行文本基名)/ channel(战斗段|棋盘兑付——声明栏,管线步序由 kind 承载)/
|
||||
# attack_type(normal|pierce|magic|""=无类型——""恒不查克制矩阵)/ base_value(威力或攻击基线)/
|
||||
# target_rule / rider(必中附加,后置于下限不进乘区)/ context(kind 专用上下文)。
|
||||
# 可选:requires(前置单据 id——前置单 redeemed 才兑付,否则静默作废;清图完美第二份用)。
|
||||
# 行协议归属战斗编排器(emit_row 以 Callable 注入——9 类行协议与来源断言不外泄本类)。
|
||||
# RNG 纪律:掷点只在结账时刻消费 armor_roll 封闭流——A 模式提交即结=消费时点与迁移前逐位一致,
|
||||
# B 模式消费次序=开单次序(同种子同操作仍逐位复现;结果数值与 A 模式可不同——兑现时机语义差异)。
|
||||
# 实现 GDD:design/gdd/systems/战斗循环/战斗结算.md(registry 追溯锚)
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 伤害控制器:全部伤害的唯一兑付管线——调用点只开单,掷点/折扣/暴击/克制/池乘区/下限/交付全在本类(垂直切片验证:每笔伤害可归因)。
|
||||
## 结账时机 policy 双模式:immediate=开单即结 / segment=攒批段界 flush——切换只改 policy 值,管线与表零改动。
|
||||
## 掷点只在结账时刻消费 armor_roll 封闭流——segment 模式消费次序=开单次序,同种子同操作逐位复现。
|
||||
## 目标在结账时刻按 target_rule 现场解析,开单不冻结对象;死亡由单位自行宣布(unit_died)触发作废/终止。
|
||||
class_name DamageController
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# 实现 GDD:design/gdd/systems/战斗循环/战斗结算.md(系统 ID B1·战斗结算——registry 追溯锚,命名规范见 CLAUDE.md)
|
||||
# 战斗结算·战斗段伤害公式族(零状态纯算术宿主——规范 1.2「工具性纯函数挂明确宿主类」)。
|
||||
# 池读取与表值读取仍归 战斗结算,本类只做算术;掷点查档与吃掷点分量算术在本类
|
||||
# (判定式参数化——表值零字面量纪律不变)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 战斗伤害公式族:零状态纯算术 static 函数(垂直切片验证:伤害公式单点可验算)。
|
||||
## 只做算术不读任何状态——池值/表值/阈值全由调用方传入(池值须先 clamp);公式内零字面量调参。
|
||||
class_name DamageMath
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,17 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-10-06(效果引擎框架)
|
||||
# 内容数据驱动:把「内容的效果行为」从散布在结算
|
||||
# 代码里的硬编码分支搬进内容数据行三个字段——订阅哪个事件(on)/ 什么条件(when)/ 什么效果(do)
|
||||
# ——由本解释器统一执行。加一件「已有效果类型」的新专长/新秘宝=只改 .tres 数据行,零代码。
|
||||
# 架构模型(R1 裁决):发布订阅——结算管线同步 emit 事件(无队列无异步,确定性优先)→ 本引擎遍历
|
||||
# 持有订阅集匹配 → 返回按声明序排列的效果命中(do 列表),由发射点按组合规则施加。
|
||||
# 多订阅与冲突(R3 裁决):一事件多订阅=常态;冲突在效果类型层用组合规则封死(§3.4 六族);遍历序
|
||||
# =数据表声明序(feats 表序→treasure 表序→树规则合成行,装载时定死),写死保种子复放。
|
||||
# 重建时机(v1.1 补):每战 begin_battle 从持有集/装备集重建 trigger 列表——冒险中途获得/换取的
|
||||
# 专长下一战生效,同战内不热载,确定性优先。计数器账本随重建清零(battle 域)。
|
||||
# 确定性契约:全同步调用、零 RNG、零 signal 时序依赖;同输入同命中序。
|
||||
# 护栏保留:事件/效果/事实/算子四词表封闭(本文件常量),行内出域=加载期校验致命(schema 侧),
|
||||
# 运行期 dispatch 对未知事件/效果类型 fail-fast(push_error+断言)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 效果引擎:内容行 on/when/do 的发布订阅解释器——加一件「已有效果类型」的专长/秘宝只写 .tres 数据行零代码(垂直切片验证:内容数据驱动可复现)。
|
||||
## 全同步调用、零 RNG、零信号时序依赖;命中序=装载声明序(feats→treasure→树规则)写死保种子复放。
|
||||
## 事件/效果/事实/算子四词表封闭在本文件常量——新词先登记,行内出域=加载期校验致命、dispatch 未知词 fail-fast。
|
||||
class_name EffectEngine
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,29 +1,9 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 线性第一关(战×2→道具→战×2→恢复→Boss)能否承载"数值提升→通关期望改善"的元进度验证
|
||||
# Date: 2026-09-11(2026-09-17 分支节点图批:行进器升级图版推进——单链 = 出边恰一的退化形态)
|
||||
# 关卡节点地图(v1.0 图版落地——节点+连线,连线只朝前进方向,唯一入口,Boss 恒唯一终点):
|
||||
# 关卡域生命周期唯一编排者——HP 跨战斗携带、恢复点节点兑付、关卡末收束。
|
||||
# 行进纪律(零自动推进):到达即兑付;兑付后确认才出现选路口——战斗胜利与奖励/恢复确认一律经
|
||||
# choices_presented 进入选路态,玩家 pick_next_node 显式选下一跳。
|
||||
# 奖励点节点内容悬置为直通节点(零兑付——内容渠道未定);战斗各自持有 地图战斗资源 容器
|
||||
# (无跨战斗状态可延续)。
|
||||
# Core 层零 UI 依赖(headless 可跑完整关卡——数据配置 Rule 7)。
|
||||
# 测试专用:hero_atk_pct/hero_hp_pct 数值覆盖(调整板模拟天赋树——正式侧归元进度,切片不落盘),
|
||||
# 覆盖值经 encounter 显式传入战斗——零表写,db.hero 运行期只读。
|
||||
# 对应 GDD:关卡节点地图 v1.0(图版结构——本文件为 P1 批实现位;命名规范见 CLAUDE.md)
|
||||
# GP 冒险钱包:战斗完成入账(clamp ≥0)、冒险收束清零。统一冒险加算区 bonus{atk,max_hp,armor_class}:
|
||||
# 商店购买与关卡大奖励共用账本——战斗开始参数 = 基础表值 + 加算区(调试浮窗百分比在加算之后乘)。
|
||||
# 商店房节点兑付:开覆盖层/购买出账/离开回选路确认(复用 continue_after_node 兑付确认纪律,零自动推进)。
|
||||
# 种子域:单关模式 start_level 自调 rng.new_adventure;冒险模式 start_level_external 不重播种
|
||||
# (主种子注入恰一次归 AdventureRunner.start_adventure)。
|
||||
# 生命账本:hero_hp/gp 属性落 _ledger 字典——冒险模式经 start_level_external 注入 AdventureRunner
|
||||
# 共享账本(Dictionary 引用共享),单关模式 = 本实例私有账本;战斗结果上报 = runner 经共享账本属性
|
||||
# 直写(战后生命终值在本类 _on_battle_finished 回写账本)。
|
||||
# 恢复数学单一路径 rest_heal_amount——冒险模式经 _rest_handler 回调(AdventureRunner.apply_rest),
|
||||
# 单关模式默认内置。
|
||||
# 收束:战斗结束 retire_mapping + despawn_all 先于 battle_finished 即事实清库(关卡域库存现行空集)。
|
||||
# 失败结算:本类只发 level_finished(每战结果上报语义),失败结算由 AdventureRunner._on_level_finished
|
||||
# 执行;GP 冒险收束清零同步归冒险结构(本类冒险模式不关钱包)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 关卡域生命周期编排者:节点图行进、HP 跨战斗携带、商店房与恢复点兑付、关卡末收束(垂直切片验证:一关内数值提升可感知)。
|
||||
## Core 层零 UI 依赖(headless 可跑完整关卡);零自动推进——兑付确认后经 choices_presented,推进只走 pick_next_node。
|
||||
## 种子域:单关模式 start_level 自播种;冒险模式 start_level_external 不重播种(主种子恰一次归 AdventureRunner)。
|
||||
## hero_atk_pct/hero_hp_pct 为测试专用覆盖——经 encounter 显式传入战斗,零表写,db.hero 运行期只读。
|
||||
## 信号顺序契约:呈现层须在 level_started 回调重取 runner 实例,choices_presented 才不会被空防御丢弃。
|
||||
class_name LevelRunner
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,19 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 钥石能否在营地换成永久强化并在下一局开局生效——冒险收束入账(大奖励 + Boss
|
||||
# 首杀/重复杀两档)、营地消费、注入计算的跨局账本能否在零 UI 下独立成立(元进度 GDD 验收标准)
|
||||
# Date: 2026-09-21(元进度实现批——设计权威 design/gdd/systems/冒险循环/元进度.md 定稿 v1.2)
|
||||
# 元进度账本服务(Core 层零 UI、纯被动服务——同 StatusContainer 先例:零信号零外发,读存档算账)。
|
||||
# 职责三件:① 属性锻造定价与购买(几何递增——tier 级价格 = 迭代 floor(p × ratio/100),tier 0 =
|
||||
# base_price,floor 单一取整对齐 round_direction 纪律);② 道具工坊解锁(渠道由 meta.tres channel
|
||||
# 字段声明、判定量换算单点 _workshop_progress——可替换轴;现行 = 总通关次数,
|
||||
# 钥石直购价后补最终双渠道;六件局内效果不入本类(只承载解锁状态);
|
||||
# ③ 冒险收束入账(Boss 两档 = 表值 first_kill/repeat_kill,首杀标记读存档判first;调 SaveManager
|
||||
# apply_adventure_summary 入账并附 boss_drops 副本——复盘可归因,验收 5)。
|
||||
# 注入面:hero_override() = 树生命/命中淬炼 flat + 锻造路线加值(当前选中武器/甲——
|
||||
# 全零 = 白板合法态;override 不写表——表运行期只读,消费方 AdventureRunner/LevelRunner 经冒险开始
|
||||
# 参数面显式传参)。
|
||||
# 纪律:数值零字面量——价格/档位/阈值/两档金额只读 db.meta_* 访问器;存档只经 SaveManager 访问器,
|
||||
# 禁读内部结构;行集解析禁自扫表(一律走 ConfigDB 访问器)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 元进度账本服务:钥石收束入账、营地消费定价与秘宝解锁判定的纯被动服务,零信号零外发(垂直切片验证:钥石跨局换成永久强化)。
|
||||
## 数值零字面量——价格/档位/阈值只读 db 访问器;存档只经 SaveManager 访问器禁读内部结构;行集禁自扫表。
|
||||
## hero_override() 现算不写表(全零=白板合法态)——生效注入只走冒险开始参数面显式传参。
|
||||
class_name MetaProgressionCore
|
||||
extends Node
|
||||
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# Date: 2026-09-10
|
||||
# 排雷玩法规则引擎:零随机/零表读取/零 UI——输入 = 棋盘生成 产物 + 意图序列,输出 = 三事件流。
|
||||
# 核心契约:install 四不变式 · 初始展开 = R₀ 恰等 · 连锁不越旗 · 批次语义序仲裁(cleared > stop > 其余)。
|
||||
# 旗语义:旗 = 一次性承诺——挖旗格放行(本格旗事务内
|
||||
# 隐式退役、轮末不判);无拔旗动作(flag_pull 已出目录)。
|
||||
# 实现 GDD:design/gdd/systems/排雷循环/排雷玩法.md(系统 ID A2·排雷玩法——registry 追溯锚,命名规范见 CLAUDE.md)
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 排雷规则引擎:棋盘产物+玩家意图批次 → 揭示/旗判定/轮末事件流,install 四不变式守门(垂直切片验证:挖掘逐行归因)。
|
||||
## 零随机、零表读取、零 UI——判定只依赖棋盘事实与动作序列。
|
||||
## 板态对外只经 current_board()/reveal_record() 等查询面,禁跨模块直读写内部字典;轮末双发射源之棋盘路径由 round_end_board 外发。
|
||||
class_name MinesweeperRules
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 每个非封锁格是否都携带可兑的格面资源身份,且同种子同操作逐位回放
|
||||
# Date: 2026-09-10(2026-09-15 格面资源批结构性重写:库存/供给轴下线,格面资源身份面纯化)
|
||||
# 地图战斗资源:格面资源的身份层——install 期身份预分配(roll_board 恰一次、消费 reward_roll 封闭流
|
||||
# 恰一 scope 批:格批 + 清图批尾)· 授予期零随机 · Ready 后只读、无重掷 · 换图映射消亡。
|
||||
# 安全格与雷格一视同仁(同一类型池、同一权重分布——雷安同池);封锁格不入摇号清单。
|
||||
# 极性不在资源内:「动作 × 格型」矩阵的字典定义归 GDD、路由执行归 战斗结算 授予段
|
||||
# (本类只提供 polarity_row 的(类型, 极性)→ 字典行查询面)。
|
||||
# 切片登记:取号约定 = randi_range(0, W-1)(切片内恒定);
|
||||
# 区间行 power roll 取号语义:快照 power = roll 值,授予期零随机不变。
|
||||
# 实现 GDD:design/gdd/systems/战斗循环/地图战斗资源.md(registry 追溯锚)
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 格面资源身份层:install 期一次性预分配每格资源身份,授予期零随机、Ready 后只读无重掷(垂直切片验证:格面资源同种子逐位回放)。
|
||||
## roll_board 每板恰一次(Ready 相位再调 = double-roll 拒绝;换图 = 合法新批);禁在本类引入授予期随机或重掷。
|
||||
## 极性路由归战斗结算授予段——本类只提供 polarity_row 的(类型, 极性)→ 字典行查询面。
|
||||
class_name RewardEconomy
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,16 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# Date: 2026-09-10
|
||||
# RngService autoload(数据配置)——统一随机流单点(Rule 5;2026-09-27 七流并一+全事件日志)。
|
||||
# 玩法代码禁止 randomize()/自建 RandomNumberGenerator。
|
||||
# 实现 GDD:design/gdd/systems/表现与支撑/数据配置.md(系统 ID D2·数据配置——registry 追溯锚,命名规范见 CLAUDE.md)
|
||||
# 统一流口径:唯一主种子 + 唯一派生(单盐)+ 唯一全局取数计数器;open_stream 参数降格为「用途标签」——
|
||||
# 不参与派生,只进事件日志(并流前七条流名全部保留为合法标签)。号位语义(并流后果,用户裁决承接):
|
||||
# 全局 scope 只回答「全局第 N 次取数」,不再回答「第 N 次某类事件」——路线依赖为已知代价,单点定位能力由事件日志承载。
|
||||
# 派生公式(R3 + 统一流):derive = mix64(SINGLE_SALT XOR wrap64(master + scope×GOLDEN))——
|
||||
# splitmix64 finalizer 变体终末混淆,见 _mix64 注记;scope 0-3 与旧 board_gen 向量逐位连续
|
||||
# (单盐沿用原 board_gen 盐)。
|
||||
# 取号语义:全新冒险首个 open_stream = 全局 scope 0;事件日志逐次落盘 user://logs/rng_log_<master_seed>.jsonl。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 统一随机流单点:唯一主种子+派生+全局取数计数器,全玩法取数必经 open_stream(垂直切片验证:同种子全程逐位复现)。
|
||||
## 玩法代码禁止 randomize()/自建 RandomNumberGenerator;重播种仅许全局计数器归零时(冒险中途重播种击穿同冒险无碰撞前提)。
|
||||
## open_stream 用途标签封闭词表 PURPOSE_TAGS——新用途=改代码扩签;断点续玩快照契约=主种子+counter()。
|
||||
class_name RngServiceCore
|
||||
extends Node
|
||||
|
||||
|
||||
@@ -1,48 +1,8 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 关掉游戏之后玩家的东西还在吗——单档 JSON 存档的写入、读回、版本迁移与损坏
|
||||
# 兜底能否在零玩法依赖下独立成立,元进度四件(钥石余额/永久强化等级表/每关通关次数表/Boss 首杀标记位)
|
||||
# 与最近冒险摘要(cap 10)能否跨进程存活(P0)
|
||||
# Date: 2026-09-21(存档序列化批——设计权威 design/gdd/systems/表现与支撑/存档序列化.md)
|
||||
#
|
||||
# 存档技术契约承载方(Core 层零 UI、零玩法依赖——禁 preload/import 任何玩法脚本、禁碰 ConfigDB/
|
||||
# RngService,可独立实例化独立验证〔存档序列化.md 验收标准〕)。
|
||||
#
|
||||
# 域清单与 owner 分工(内容 owner 定口径,本类照单承载、不替任何人定义进度):
|
||||
# keystone_balance / item_unlocks / level_clear_counts / boss_first_kill
|
||||
# —— 内容 owner = 元进度.md(钥石余额/道具工坊/通关次数/首杀标记;属性锻造柜台已退役
|
||||
# ——生命唯一入口=树脊柱、攻/AC 唯一入口=锻造工坊路线,见 meta_progression.gd 注入面)
|
||||
# boss_kill_count / attunement_equipped / attune_refresh_level
|
||||
# —— 内容 owner = 秘宝.md(同调位账本):Boss 击杀总数〔含重复〕=
|
||||
# 生涯页终身计数与迭代 22 解锁条件消费面〔槽位数量=树同调位节点点亮数〕;装配关系 = 局外进度事实(元进度域同族
|
||||
# ——非契约 2 反面清单的「局内道具库存」,后者=冒险进行中瞬态);attune_refresh_level = Y 刷新
|
||||
# 升级购买等级
|
||||
# tree_nodes / fork_sides / tree_struct —— 内容 owner = 天赋树.md(tree_nodes=node_id→已购等级;fork_sides=fork_group→激活态;tree_struct=树结构
|
||||
# 版本标记〔缺失=换代前结构→加载时树域破坏性废弃重置——开发阶段无迁移,Q3 用户裁〕)
|
||||
# forge_routes —— 内容 owner = 锻造工坊.md(levels 六路线等级+unlocked 直购解锁清单
|
||||
# +weapon/armor 当前选中标记;**无特效域**(裁 6——满级特效本期不做);解锁态派生不落档:
|
||||
# 初始持有〔表 initial_owned〕∨ 直购〔unlocked〕∨ 练满前一档〔levels[prereq]≥cap〕——派生单点
|
||||
# 在 MetaProgression.forge_route_unlocked;旧档缺键补齐=初始持有态,开发阶段禁迁移禁折算)
|
||||
# breakpoint.attunement_charges(主动件充能余量)——每冒险重置语义的断点瞬态附随件,内容装配归
|
||||
# AdventureRunner(断点域接线),本类照单承载;契约 2 域界注记同断点域豁免先例
|
||||
# recent_summaries(冒险摘要五件事副本)—— 内容 owner = 冒险结构.md(摘要五件事口径)
|
||||
# adventure_total / adventure_cleared(生涯终身计数域)—— 内容 owner = 生涯.md(跨局汇总页
|
||||
# 数据源:总局数开局即计〔三结局同经收束恰计一次,含放弃与失败〕/通关局数三关全通才计 1
|
||||
# ——判定字段 summary.cleared;写入唯一经 apply_adventure_summary)
|
||||
# breakpoint(冒险断点快照——停点粒度续玩域)—— 内容 owner = 冒险结构.md(七字段拍板面
|
||||
# +恢复必需附随件:主种子/取数计数器/钥石累计/已到节点序/道具库存);契约 2 域界反面清单
|
||||
# 只约束 meta 永久进度域——断点域=冒险进行中瞬态快照,生命/GP/道具库存按拍板面入域。
|
||||
# 承载 owner = 存档序列化.md(格式/时机/迁移/损坏/域登记)
|
||||
#
|
||||
# 契约登记(存档序列化.md 核心规则——违反即返工):
|
||||
# 契约 1 表与档分家:存档只记进度事实,禁止把数值配方写进存档(数值改版后旧档按加载时的表解释);
|
||||
# 契约 2 域界干净:行动点/RAP/道具库存/生命账本/GP 不出现在存档内容里(反面清单,冒烟有断言);
|
||||
# 契约 3 钥石不丢:写入/读回/迁移不得破坏元进度「钥石只增不减(消费除外)」判据——
|
||||
# tmp+rename 原子写(写一半断电不留烂档)+ 损坏兜底坏档备份;
|
||||
# 契约 4 高版本拒读:version > SAVE_FORMAT_VERSION → 不加载且禁写盘(保护未来版本的档不被覆写),
|
||||
# 内存以默认新档运行。
|
||||
#
|
||||
# JSON 键纪律:字典键一律 String——JSON 键非字符串的坑,int 键(关卡序号)读写两侧都要 str() 换算,
|
||||
# 混用必出静默 miss。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 存档唯一实现:JSON 单档写入/读回/版本迁移/损坏兜底,Core 层零 UI 零玩法依赖(垂直切片验证:进度跨进程存活)。
|
||||
## 禁 preload/import 任何玩法脚本、禁碰 ConfigDB/RngService——须可独立实例化独立验证。
|
||||
## 新增存档键先在序列化函数登记并升版本号;键域内容口径归各 GDD 文档,本类照单承载。
|
||||
## 存档键清单的事实源=本类序列化/读回代码,不在任何文档维护第二份键清单。
|
||||
class_name SaveManagerCore
|
||||
extends Node
|
||||
|
||||
|
||||
@@ -1,11 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# Date: 2026-09-16
|
||||
# 敌人系统·技能摇号器(proposal-skill-pool D9 封装纪律):独立服务类——输入 实例池可摇条目 + 随机子流,
|
||||
# 输出 skill_id。权重份额归一:中签率 = 该技能权重 ÷ 可摇权重合计(排除谁,谁的份额按比例摊给其余技能)。
|
||||
# 不碰血量、不碰表、不碰容器——过滤与冷却状态由调用方(战斗结算换算层)注入确定值。
|
||||
# 零随机纪律:随机消费只在子流参数(behavior_roll 派生流),本类无自建随机源。
|
||||
# 实现 GDD:design/gdd/systems/战斗循环/敌人系统.md(registry 追溯锚,命名规范见 CLAUDE.md)
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 敌人技能摇号器:可摇条目+随机子流 → skill_id,权重份额归一(垂直切片验证:敌方行动可归因)。
|
||||
## 不碰血量/表/容器——过滤与冷却由调用方注入确定值;随机只消费传入子流,本类零自建随机源。
|
||||
class_name SkillLottery
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# Date: 2026-09-10
|
||||
# 增益状态·统一状态容器:三向效果同构实例 · 单一时限量纲 remaining_settlements(先兑付后衰减)·
|
||||
# 按行叠层(stack 授予不触碰 R)· 授予时数值快照抗热重载 · 零随机零信号。
|
||||
# 注:MVP 单敌假设经 敌人系统 回验不成立(定多敌)——enemy 侧 side-wide 语义按 registry 改写执行。
|
||||
# 实现 GDD:design/gdd/systems/战斗循环/增益状态.md(系统 ID B3·增益状态——registry 追溯锚,命名规范见 CLAUDE.md)
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 增益状态统一容器:三方效果同构实例、单一时限量纲(先兑付后衰减)、按行叠层与授予时快照抗热重载(垂直切片验证:增益减益逐行归因)。
|
||||
## 零随机零信号——纯被动服务;授予唯一入口 apply_effect,满层拒绝零写入(拒收记未生效行归调用方)。
|
||||
class_name StatusContainer
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,19 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 道具从掉落到使用的全程零随机零特判——同操作序列重放两遍,库存与叠加层投影逐位相同(P0)
|
||||
# Date: 2026-09-29(迭代 7 T2 core 骨架——秘宝内容批;设计权威 design/gdd/systems/排雷循环/秘宝.md
|
||||
# + registry 秘宝条目(键 aux_items 沿用)api 8 入口/load_bearing_rules/use_orchestration)
|
||||
# 秘宝 关卡域库存 + 板级叠加层(自持派生信息层)。
|
||||
# 结构冻结照抄(违反即返工):
|
||||
# 零随机(零 RNG 流消费——信息只来自 排雷玩法 恒真数字/地图战斗资源 Ready 映射/行动经济 账本三既有事实源);
|
||||
# 库存关卡域(跨轮跨图跨战斗延续、关卡末清空——清空编排归 战斗结算/关卡层,本类只供 clear/reset);
|
||||
# 叠加层随图消亡(换图/弃图刷新/战斗结束三清——编排归 战斗结算 retire_overlays);
|
||||
# Used 不可逆(consume 后保留只读——枚举序=受理序);
|
||||
# 真视恒可用(零雷窗口=「这 9 格没雷」信息非空);点击级零信息不消耗(拒绝零消耗——预读窗口全已开);
|
||||
# 零特判(排雷玩法 代码零本系统分支——本类不写任何其他系统状态)。
|
||||
# 负空间:无自动使用入口/无重掷/无事件订阅/无 RNG 直连/无 排雷玩法/地图战斗资源 写入口;
|
||||
# 相位检查归 战斗结算 use_treasure 编排第一步(本类不管相位——validate_use 是纯谓词+投影)。
|
||||
# 呈现取数面:query_inventory(C 区槽位)/query_overlays(棋盘叠加层标记)——只读投影,零数据复制
|
||||
# (预读徽章数据源=战斗结算 query_reward_identity 既有读面,本类只记「哪些格要额外显示」)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 秘宝关卡域库存+板级叠加层:全程零随机零特判,同操作序列重放库存与叠加层投影逐位相同(垂直切片验证:道具全程确定性)。
|
||||
## Used 不可逆——consume 后保留只读,枚举序=受理序;库存关卡域跨战斗延续、关卡末清空,叠加层随图消亡(清空编排归调用方,本类只供 clear/reset/retire_overlays)。
|
||||
## 零特判纪律:本类不写任何其他系统状态,排雷玩法代码零本系统分支;相位检查归战斗编排 use_treasure——validate_use 是纯谓词零消耗。
|
||||
class_name TreasureItems
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,17 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# Date: 2026-09-16
|
||||
# 敌人系统·战斗单位容器:hero/enemy 统一受伤死亡接口 · 实例池状态机(设计权威=敌人系统.md 技能池节)
|
||||
# · 行值快照抗热重载 · 编排被动零事件。
|
||||
# 实例池三层对象:定义层技能行(SkillTable)· 定义层池模板(EnemyTable.pool)·
|
||||
# 本类持实例层——spawn 把模板快照为各实例池(冷却全零),此后冷却递减/待发动作/保底计数各自独立。
|
||||
# 零随机零事件纪律:随机消费只在 战斗结算换算层抽签器(SkillLottery + behavior_roll 子流);
|
||||
# 本类只收确定结果(set_pending_action)并管理确定性状态(冷却递减、执行上报)。
|
||||
# 拍结构:每结算每存活敌恰行动一次、行序、先作用后推进;"轮到什么"由开轮摇号决定
|
||||
# (死亡即不动手:摇定后兑现前死亡 → 本拍作废、不 commit)。
|
||||
# 接口:heal() = 治疗写入口(战斗结算 治疗 clamp 用);spawn 签名含 hero_attack_type/hero_armor_type
|
||||
# 两根类型轴注入面(hero.tres 静态表不持两轴——契约 2 所有权归锻造工坊,空串=锻造工坊配置默认值回退)。
|
||||
# 实现 GDD:design/gdd/systems/战斗循环/敌人系统.md(registry 追溯锚,命名规范见 CLAUDE.md)
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 战斗单位容器:hero/enemy 统一受伤死亡接口与实例池状态机,行值快照抗热重载(垂直切片验证:敌方行动可归因)。
|
||||
## 零随机零事件——随机只在调用方换算层抽签消费,本类只收确定值;死亡由单位自行宣布 unit_died。
|
||||
## 英雄加成只经 spawn 显式入参(-1=表值兜底),禁直改表值再由本类读表;单位读写只经投影面与命名写口,原始数组不外露。
|
||||
class_name UnitContainer
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# Date: 2026-09-10
|
||||
# 数据配置 ActionEconomyTable schema(行动经济 回填值,单行全局;Rule 4 豁免)。
|
||||
# 数值域与跨字段校验依据 design/gdd/systems/排雷循环/行动经济.md "ActionEconomyTable Schema 定稿"。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 行动经济表 schema:行动点预算旋钮单行全局类型化读取(垂直切片验证:完整战斗逐行归因)。
|
||||
## validate() 违例加载期致命(fail-fast);表运行期只读,调参只走 data/tables 表值。
|
||||
class_name ActionEconomyTable
|
||||
extends Resource
|
||||
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 三关连探冒险(地精洞窟 → 幽暗地域 → 灰矮人矿城)能否以一条命走完,通关兑付的
|
||||
# 部分回血与提升三选一、Boss 逐杀钥石掉落在冒险摘要里成立(P0)
|
||||
# Date: 2026-09-21(冒险结构 关卡大奖励表)
|
||||
# 数据配置 AdventureTable schema(冒险结构 关卡大奖励行值;单行全局,Rule 4 豁免——HeroTable/SettlementTable 先例)。
|
||||
# 大奖励 = 三层奖励框架;三选一池 = 固定配额令牌池——普通 70/稀有 25/
|
||||
# 罕见 5=100 张;洗牌不放回抽 3、选中踢池未选回池、池耗即枯竭(池消耗即上限)。
|
||||
# 档位构成:普通〔小GP 18/小增伤 18/小护甲 17/小生命 17〕+稀有〔大GP/大增伤/大护甲/大生命/恢复 各 5〕
|
||||
# +罕见〔AP 3〕——罕见档「道具件」不投放(池种已退役),配额缺省收窄。
|
||||
# 恢复件=池内种类(当即回血)。
|
||||
# 全部 knob provisional(数值所有权归 难度曲线与Boss,上调须重扫通关率带)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 冒险大奖励表(奇物三选一令牌池)schema:档位配额/件值/已拿上限的类型化读取(单行全局;垂直切片验证:三关连探一条命走完)。
|
||||
## kind/tier 词表封闭——断点附随件与牌库剔除态依赖,扩件走本表+registry 修订,禁调用侧私扩。
|
||||
## 档位配额总量是结构锚(validate 硬断言):改投放总量=重裁非调参;全部 knob provisional,上调须重扫通关率带。
|
||||
class_name AdventureTable
|
||||
extends Resource
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# Date: 2026-09-10
|
||||
# 数据配置 BoardGenTable schema(棋盘生成 回填值;键 (level_index, node_depth)——首个进度键表)。
|
||||
# 依据 design/gdd/systems/排雷循环/棋盘生成.md "BoardGenTable Schema 定稿" + F2/F2b/F2c 谓词。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 棋盘生成表 schema:逐 (level_index, node_depth) 行生成参数的类型化读取(垂直切片验证:完整战斗逐行归因)。
|
||||
## validate() 违例加载期致命(fail-fast);solver_rules 结构冻结 single_subset——可解性/成本护栏随行校验强制。
|
||||
class_name BoardGenTable
|
||||
extends Resource
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-09-12
|
||||
# 数据配置 DifficultyTable schema(难度曲线与Boss GDD Core Rule 1 兑现——敌人系统 Rule 10 "接口未定 provisional" 的建表兑现,走 数据配置 接口漂移规则)。
|
||||
# 全局修饰结构位:按 (L,D) 精确匹配施加乘数于 EnemyTable 行值(敌人系统.spawn 实例化时、行值快照前)。
|
||||
# MVP 空表(零行为——AC-10);首个使用场景 = 精英节点(关卡节点地图 定稿联动,难度曲线与Boss OQ5);Boss 走 Dmax 直填行不走本表。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 难度修饰表 schema:按 (level_index, node_depth) 精确匹配施加乘数的类型化读取(空表=零行为合法态)。
|
||||
## Boss 数值走行值直填不经本表;乘数越域仅告警、使用时 clamp(组合事故不作配置事故拒载)。
|
||||
class_name DifficultyTable
|
||||
extends Resource
|
||||
|
||||
|
||||
@@ -1,13 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# Date: 2026-09-10
|
||||
# 数据配置 EnemyTable / HeroTable schema(敌人系统 回填值)。EnemyTable 键 (L,D,enemy_id),行集可多行混编
|
||||
# (行集构成纪律 = 敌人系统 v0.15:行集内 enemy_id 唯一〔dup_key 拦〕/ 同坐标多行文件内相邻〔行序即契约,本表
|
||||
# validate 兜底〕/ 行集实例总数 ≤4 守卫在 单位容器 spawn〔骰后值,加载期不可判〕);
|
||||
# HeroTable 单行全局(Rule 4 豁免)。依据 design/gdd/systems/战斗循环/敌人系统.md Schema 节。
|
||||
# 敌人技能池:行模板 pool = [{skill_id, weight}](定义层——实例池快照与冷却状态在 单位容器;
|
||||
# 设计权威=敌人系统.md 技能池节)。无 pattern 行为环数组与 heavy_multiplier 字段。
|
||||
# 池构成纪律(每池恰一行普攻、增益 ≤1、skill_id 悬空致命)需跨表视野,校验在 ConfigDB 跨表通道。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 敌人表 schema:逐 (level_index, node_depth, enemy_id) 行集的类型化读取(行集可多行混编;垂直切片验证:完整战斗逐行归因)。
|
||||
## 行序即契约:同坐标多行必须文件内相邻——resolver 返回序/生成序/叙述取首行全依赖文件行序。
|
||||
## 行集实例总数 ≤4 是开战骰后守卫(加载期不可判,闸在单位容器 spawn);技能池构成纪律需跨表视野,校验在 ConfigDB 跨表通道。
|
||||
class_name EnemyTable
|
||||
extends Resource
|
||||
|
||||
|
||||
@@ -1,22 +1,8 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 专长订阅行能否经效果引擎统一解释执行、逐件行为与声明一致(P0)
|
||||
# Date: 2026-10-11(设计权威 design/gdd/systems/冒险循环/奇物.md——不设流派标签、不设档位机制;
|
||||
# rarity 四级;概率位=档+rarity 与上限=cap 两独立属性解耦——cap 拿了才计、刷出不计)
|
||||
# 概念指路:本表的专长,与 adventure.tres 的属性值提升、资源,同属一个对象——
|
||||
# 「奇物」(一次冒险内各渠道给予玩家的增益总称)。定义见 design/gdd/systems/冒险循环/奇物.md。
|
||||
# 它们是它分类轴上的枚举(专长 / 属性值提升 / 资源),不是三套系统;本表承载「专长」(专长 Feat)的逐项定义
|
||||
# (表名与 feat_id 沿用历史命名)。目标渠道:专长走关底 Boss 击败后专属三选一(不新增节点类型),
|
||||
# 见奇物文档 2.1 节。
|
||||
# 数据配置 FeatTable schema(奇物·专长定义表;行 = Dictionary 键 feat_id,Rule 4 豁免
|
||||
# 定义表——TreasureItemTable 先例)。
|
||||
# 行字段:feat_id 主键 / display_name / rarity ∈ {common, excellent, rare, legendary}(四级稀有度,
|
||||
# 与令牌池档位词表同名词族——令牌档 = rarity 直映射)/ cap 已拿上限(正整数,缺省 1——「同一件
|
||||
# 最多拿 N 次」;概率位与上限解耦见奇物.md 池结构节)/ desc 效果说明(文案表值化——呈现层读行,
|
||||
# 零硬编码)/ triggers 订阅行数组(订阅哪个事件 on / 什么条件 when / 什么效果 do——效果引擎
|
||||
# EffectEngine 统一解释执行;四词表封闭校验=EffectEngine.validate_trigger_row 单一事实源)。
|
||||
# 🔴 层级纪律(需求卡片红线 2):专长只走局内随机渠道(Boss 三选一/凭证开启)——本表行永不入同调位
|
||||
# (treasure_items 表)/局外树(T8 节点表)。
|
||||
# 注记:事件族(开格/插旗/踩雷/节奏/战斗系)仅系设计侧分组工具——不上数据行、不上卡面(命名铁律)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 专长(奇物·Feat)定义表 schema:逐 feat_id 行订阅式效果声明的类型化读取(空表合法态;垂直切片验证:订阅行经效果引擎统一解释执行)。
|
||||
## 🔴 层级纪律:专长只走局内随机渠道(Boss 三选一/凭证开启)——本表行永不入同调位表/局外树。
|
||||
## triggers 订阅行四词表封闭校验单点在 EffectEngine.validate_trigger_row——本表不自建第二套校验。
|
||||
## 事件族命名仅系设计侧分组工具:不上数据行、不上卡面。
|
||||
class_name FeatTable
|
||||
extends Resource
|
||||
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-10-12(迭代 23 锻造工坊实装批 T1——设计权威 design/gdd/systems/跨局循环/锻造工坊.md v0.6)
|
||||
# 锻造工坊配置表(ForgeTable):两根类型轴默认值(常驻持有——契约 2)+ 六条锻造路线行族(三武器+三甲)。
|
||||
# 所有权切分(契约 1 红线):攻击唯一入口=武器路线、AC 唯一入口=甲路线——树零攻防来源,本表是攻防
|
||||
# 数值成长的唯一数据面。等级语义(Q1 用户裁):未解锁/未锻造=0 加值(裸体态,类型=默认轴值);
|
||||
# 解锁并锻造第一级=「获得装备」=1 级=首个 +1;逐级递进(2 级=+2 量级)。
|
||||
# 数值全 provisional(需求卡片 T1 锚表投值——终值归 M4 数值批):cap 5/每级增量统一 +1(v1.2 用户裁)/
|
||||
# 基础价 20/公比 150%(各级价格 20/30/45/67/101)/一次性解锁价 200/甲型基础 AC 10-12-9(现役结构值)。
|
||||
# 表运行期只读(铁律):永久强化只写存档(forge_routes 域),本表零写面。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 锻造工坊表 schema:两根类型轴默认值 + 六条锻造路线行族的类型化读取(数值 provisional)。
|
||||
## 所有权切分(红线):攻击唯一入口=武器路线、AC 唯一入口=甲路线——树零攻防来源,本表是攻防数值成长唯一数据面。
|
||||
## 表运行期只读(铁律):永久强化只写存档 forge_routes 域,本表零写面。
|
||||
class_name ForgeTable
|
||||
extends Resource
|
||||
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# Date: 2026-09-10
|
||||
# 数据配置 HeroTable schema(单行全局,Rule 4 豁免)。
|
||||
# atk = 基础攻击恒存在:域 [1,999]、0 = 加载拒绝——零基线死锁 schema 层杜绝。
|
||||
# 类型轴 armor_type/attack_type 不在本表——契约 2 所有权归锻造工坊:默认值归 forge.tres 常驻持有、
|
||||
# 选中态写存档经参数面注入;本表只有
|
||||
# 三数值轴 max_hp/atk/armor_class(armor_class=甲路线缺失时兜底基准,甲型基础 AC 归 forge.tres 行)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 英雄基线表 schema:max_hp/atk/armor_class 三数值轴单行全局类型化读取(垂直切片验证:完整战斗逐行归因)。
|
||||
## 类型轴不归本表(所有权在锻造工坊):默认值住 forge 表常驻持有、选中态写存档经参数面注入。
|
||||
## atk 无零基线:0 = 加载拒绝(零基线死锁在 schema 层杜绝)。
|
||||
class_name HeroTable
|
||||
extends Resource
|
||||
|
||||
|
||||
@@ -1,17 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 线性第一关(战×2→道具→战×2→恢复→Boss)能否承载"数值提升→通关期望改善"的元进度验证
|
||||
# Date: 2026-09-11(关卡节点地图 v1.0 图结构;单链=出边恰一的退化形态)
|
||||
# 数据配置 LevelTable schema(关卡节点地图 v1.0 承载面)。
|
||||
# 节点类型 closed enum:battle(战斗,须带 node_depth)/ reward(直通占位点)/ rest(血量恢复点)/ boss(关底 Boss,须带 node_depth)
|
||||
# / shop(商店房:同 reward/rest 无战斗行、无 node_depth 要求,
|
||||
# 图形态仍须编号化;零新增图合法性检查,必经位由冒烟断言承载非加载校验)。
|
||||
# 图形态(行集内任一节点带 "next" 出边表即整行按图校验):节点编号 = node_depth(关卡内唯一定位地址,
|
||||
# 全节点须带,reward/rest 亦然);next = [出边节点编号...](连线只朝前进方向:目标编号严格大于自身)。
|
||||
# 单链形态(零 "next" 键——第一关现状零迁移):隐式出边 = 数组顺序下一项,节点编号 = 数组下标
|
||||
# (仅校验期内部使用;node_depth 仍只对 battle/boss 必填)——单链经同一套图合法性算法。
|
||||
# 图合法性(违规加载致命,validate 报错由 ConfigDB 收敛为 fail-fast):
|
||||
# 编号唯一 · 入口唯一(无入边节点恰一)· Boss 恒唯一终点(无出边且编号最大)· 连线只朝前进方向(⇒无环)
|
||||
# · 从入口可达全部节点 · 全部节点沿连线可达 Boss。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 关卡节点表 schema:逐关节点链(单链/节点图两形态)的类型化读取(垂直切片验证:线性第一关承载元进度循环)。
|
||||
## 两形态同跑一套图合法性算法,违例加载期致命(validate 报错由 ConfigDB 收敛为 fail-fast)。
|
||||
class_name LevelTable
|
||||
extends Resource
|
||||
|
||||
|
||||
@@ -1,19 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否在营地用钥石换永久强化、且强化在下一局开局生效——存档变厚成为玩家可感的现实
|
||||
#(元进度 GDD 验收标准)
|
||||
# Date: 2026-09-21(设计权威 design/gdd/systems/冒险循环/元进度.md)
|
||||
# 数据配置 MetaTable schema(元进度行族)。
|
||||
# 行族三轴(数据契约对齐 ConfigDB.meta_* 访问器——消费面一律走访问器,禁直读行集):
|
||||
# boss_keystone = Boss 钥石两档行(level_index 连续从 1;first_kill ≥ repeat_kill——首杀全量、
|
||||
# 重复杀固定小额恒定不递减,两档数值归 元进度.md)。
|
||||
# conversion = 区间平移换算率行(attr 与三属性轴词表一致恰三;per_level_shift_pct ∈ [0,100]——
|
||||
# registry 键 meta_progression_conversion_table;护甲行强条目:验收读数必须按解锁后参数重测)。
|
||||
# attune_refresh_upgrade = Y 刷新升级行族(每冒险开局给 Y 次、冒险周期池、
|
||||
# 用完即无;level 连续从 1,等级 L → refresh_charges=Y 表值,钥石直购 keystone_cost;数值全 provisional)。
|
||||
# 〔无 forge_products 属性锻造行族——生命唯一入口=树脊柱、攻/AC 唯一入口=锻造工坊路线。〕
|
||||
# 〔无 workshop_items 道具工坊行族——解锁=混合制:钥石购买价
|
||||
# unlock_keystone_cost + 条件谓词 unlock_requires 全挂 treasure_items.tres 行内(单一事实源)。〕
|
||||
# 行值全部 provisional(读数归 元进度.md)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 元进度表 schema:Boss 钥石两档/属性换算/Y 刷新升级三行族的类型化读取(行值 provisional;垂直切片验证:钥石换永久强化下局生效)。
|
||||
## 消费面一律走 ConfigDB.meta_* 访问器,禁直读行集。
|
||||
## 道具解锁条件不在本表:单一事实源住 treasure_items 行内(unlock_keystone_cost + unlock_requires)。
|
||||
class_name MetaTable
|
||||
extends Resource
|
||||
|
||||
|
||||
@@ -1,26 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 数据配置 MetaTreeTable schema(设计权威
|
||||
# design/gdd/systems/跨局循环/天赋树.md v0.8)。
|
||||
# 结构:12 节点 = 脊柱 2(生命淬炼/命中淬炼——一线一节点 cap4:一个内容一个
|
||||
# 节点、等级在节点内)+ 锻造脉 2(锻造工坊钥匙 free 无前置 + 彩蛋地脉共鸣——彩蛋含在此 2 内)
|
||||
# + 钥石脉 2(秘宝匣/刷新升级)+ 同调脉 6(同调位 1/2/3 + Fork 3 双态节点)。
|
||||
# 行字段:node_id / display_name / vein ∈ VEINS(spine=主干脊柱;forge=锻造脉;keystone=钥石脉内容
|
||||
# 解锁;attune=同调脉)/ kind ∈ KINDS(stat=数值线/rule=全局规则/unlock=内容解锁/socket=同调位/
|
||||
# fork=一节点双态开关/easter=彩蛋觉醒)/ currency ∈ {keystone, free}(树全钥石单币;free=工作间钥匙与彩蛋)/ price [0,9999] / cap [1,9](等级上限;unlock/socket/fork/
|
||||
# easter 恒 1)/ requires Array[node_id](点亮前置——前置节点 tree_level>=1 即满足)/
|
||||
# requires_level Dictionary{node_id: n}(等级阈值前置机制位:前置节点等级 ≥ n 才可购;现役 12 行
|
||||
# 零配置=机制位空转零行为影响,配置归表行随需填;键悬空/阈值 <1 加载即拒)/
|
||||
# effects Dictionary(stat 线 flat:max_hp/hit;rule 键封闭 RULE_KEYS)。
|
||||
# Fork 一节点双态:fork_group ∈ FORK_GROUPS 每组恰一节点;
|
||||
# 行持 effects_a/effects_b 双效果键(A/B 只放规则面——键 ⊆ RULE_KEYS)+ name_a/name_b 双态呈现名;
|
||||
# 购买解锁默认 A 态、营地零币切换(tree_toggle_fork),效果按激活态(save.fork_sides)取值。
|
||||
# 行门槛:脊柱节点第 N 级可购需全树已购总等级 ≥ SPINE_ROW_GATE×(N−1)(总等级口径
|
||||
# =tree_nodes 全部节点等级之和,免费点亮与 Fork 解锁计入)。
|
||||
# 🔴 层级纪律(需求卡片红线 2):局外树只放全局规则件——effects 禁流派标签(archetype 键出域=加载
|
||||
# 致命);规则改写型特性只走局内随机渠道,永不入树。
|
||||
# 彩蛋 ≤3(schema 校验);觉醒判定=MetaProgression._check_easter_egg 特化(生命/命中两线拉满+同调位
|
||||
# 全解锁),不依赖 requires 点亮形态。
|
||||
# 数值全 provisional(契约 7);两侧「不同强非强弱」MC 验差 <~3pp(V19)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 天赋树表 schema:逐 node_id 行(脊柱/锻造/钥石/同调四脉)的类型化读取(空表合法态;数值 provisional)。
|
||||
## 🔴 层级纪律:局外树只放全局规则件——effects 禁流派标签(archetype 键出域=加载致命);
|
||||
## 规则改写型特性只走局内随机渠道,永不入树。
|
||||
class_name MetaTreeTable
|
||||
extends Resource
|
||||
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# Date: 2026-09-10(地图战斗资源 五型 × 极性字典)
|
||||
# 数据配置 RewardTable schema(地图战斗资源 回填值)。
|
||||
# 行 = Dictionary,键 reward_id(Rule 4 豁免:定义表);跨字段校验族 + 池护栏。
|
||||
# 九型封闭枚举(attack/defense/heal/blast/weaken/pierce/magic/action/gp)× 极性(positive/negative):
|
||||
# 正向行 = 摇号池(权重 = 类型频次);负向行 = 纯兑付字典(不消费权重)。
|
||||
# gp 型正负两行入池,
|
||||
# effect_id gp_gain/gp_loss = 战斗内缓冲通道(战斗结算 escrow 记账,不入增益容器)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 格面资源表 schema:逐 reward_id 行(类型×极性字典 + 摇号池 + aux 投放行)的类型化读取(垂直切片验证:完整战斗逐行归因)。
|
||||
## (类型, 极性) 字典齐备与 cell 池非空是加载前提——缺行/池空即致命(fail-fast)。
|
||||
class_name RewardTable
|
||||
extends Resource
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# Date: 2026-09-10
|
||||
# 数据配置 SettlementTable schema(战斗结算 回填值;单行全局,Rule 4 豁免)——八字段口径 + 克制/充能批 + 护甲等级掷点批。
|
||||
# 三行致命 manifest:segorder_violation / poolmap_dangling / pperfect_oob。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 战斗结算表 schema:结算全局旋钮(段序/克制矩阵/掷点档位)单行全局类型化读取(垂直切片验证:完整战斗逐行归因)。
|
||||
## 结构冻结位(段序/取整/pool clamp/效果池映射)违例加载期致命(fail-fast)。
|
||||
class_name SettlementTable
|
||||
extends Resource
|
||||
|
||||
|
||||
@@ -1,20 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否在 Boss 前商店房用战斗掉落 GP 购买三属性锻造档,兑现「数值提升→后续战斗改善」的局内成长闭环(P1)
|
||||
# Date: 2026-09-21(GP 冒险钱包 × 商店房)
|
||||
# 数据配置 ShopTable schema(GP 冒险钱包 × 商店房 行族四轴)。
|
||||
# 行族四轴(数据契约对齐 ConfigDB.shop_* 访问器——消费面一律走访问器,禁直读行集):
|
||||
# gp_drops = 战斗掉落掷定行(键 tier:normal/elite/boss 封闭词表;掷定 = roll_min..roll_max 均匀整数,
|
||||
# mean = 期望锚——roll_min ≤ mean ≤ roll_max,行动经济 条款①期望当量锚同款纪律);elite 为预留行
|
||||
#(当前无消费方,随精英节点内容批启用)。level_gp_bonus = 关级掉落加值行(level_index 连续从 1 递增)。
|
||||
# products = 商品行(键 product_id;三件全陈列无刷新无摇号);
|
||||
# 现价公式 = base_price + price_level_bonus(关卡) + price_increment × 该商品已购档数(已购档数在 冒险结构)。
|
||||
# price_level_bonus = 关级定价加值行(level_index 连续从 1 递增)。
|
||||
# pool_shelf = 共享池货架行:键 kind_id 词表
|
||||
# 封闭 = 四切边后种(SHELF_KINDS:attack/max_hp/armor/ap——GP 袋负交易切边、规则改写型特性三轴 doctrine 切边);
|
||||
# 库存=上限即库存(账本在 冒险结构 _curio_taken 单点共享,行族不记库存);price_a/price_b = 乘法价格
|
||||
# 因子(公式 ceil(base × b^(关序−1) × A^(本次进店已购次数)),provisional 投值——P5 甲研究拍板后置追认)。
|
||||
# products 行族 + 加法定价 = legacy 模式承载(shop=off 对照)。
|
||||
# 行值全部 provisional(数值归 难度曲线与Boss)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 商店表 schema:GP 掉落/关级加值/商品/共享池货架行族 + 爬价因子的类型化读取(行值 provisional;垂直切片验证:商店房 GP 购买兑现局内成长)。
|
||||
## 消费面一律走 ConfigDB.shop_* 访问器,禁直读行集。
|
||||
## 行族不记库存:货架=上限即库存,账本单点在冒险侧;products+加法定价=legacy 面(shop=off 对照),现役走 pool_shelf。
|
||||
class_name ShopTable
|
||||
extends Resource
|
||||
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# Date: 2026-09-16
|
||||
# 数据配置 SkillTable schema(定义层"技能行",敌人系统 回填值;行 = Dictionary,键 skill_id;Rule 4 豁免)。
|
||||
# 设计权威:敌人系统.md 技能池节 §2.2 字段词汇表。
|
||||
# 三层对象:技能行(本表,多敌种共享)· 池模板(EnemyTable.pool:{skill_id, weight})· 实例池(单位容器 spawn 快照)。
|
||||
# 池构成纪律的加载校验在 ConfigDB 跨表通道(每池恰一行普攻、增益 ≤1、skill_id 悬空致命——本表无池视野)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 技能表 schema:逐 skill_id 行的类型化读取(多敌种共享的定义层;垂直切片验证:完整战斗逐行归因)。
|
||||
## 本表无池视野:池构成纪律(每池恰一行普攻、增益 ≤1、skill_id 悬空致命)校验在 ConfigDB 跨表通道。
|
||||
## 普攻行结构锁死(倍率恒 1、冷却恒 0)——「池恒非空」的结构前提,禁配伤害/冷却参数。
|
||||
class_name SkillTable
|
||||
extends Resource
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# Date: 2026-09-10
|
||||
# 数据配置 StatusEffectTable schema(增益状态 回填值;行 = Dictionary,键 effect_id;Rule 4 豁免)。
|
||||
# 依据 design/gdd/systems/战斗循环/增益状态.md "StatusEffectTable Schema 定稿"。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 增益状态表 schema:逐 effect_id 行的类型化读取(垂直切片验证:完整战斗逐行归因)。
|
||||
## validate() 违例加载期致命(fail-fast);表运行期只读,调参只走 data/tables 表值。
|
||||
class_name StatusEffectTable
|
||||
extends Resource
|
||||
|
||||
|
||||
@@ -1,30 +1,8 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 挖掘期撞上推理断头时,玩家能否从掉落池捡到秘宝、在关键时刻花掉买回情报或行动点(P0)
|
||||
# Date: 2026-09-29(秘宝内容批数据面;设计权威 design/gdd/systems/排雷循环/秘宝.md
|
||||
# + registry 秘宝条目)
|
||||
# 数据配置 TreasureItemTable schema(秘宝 回填 owner)。
|
||||
# 行 = Dictionary,键 item_id(Rule 4 豁免:定义表——registry 秘宝条目 Rule 4 豁免先例)。
|
||||
# 七字段(registry fields 全量):item_id 主键 / display_name / dimension_tags ⊆ 五维 非空 /
|
||||
# effect_kinds ⊆ {mine_reveal, reward_preview, ap_grant}(活性校验见下)/ target ∈ {none, area_3x3, board_wide} /
|
||||
# magnitude [0,999](仅 ap_grant 行消费,加载校验 ≥1)/ use_phase ∈ {active_dig}。
|
||||
# additive 两标记:
|
||||
# retired = 退役留痕行(现行目录零 retired 行;deferred/retired 双标记的加载豁免通道仍在役)
|
||||
# deferred = 效果失义待重定行(现行目录零 deferred 行;免 effect_kinds 非空校验、不入投放与 F2)
|
||||
# 承重护栏(秘宝 GDD §结构冻结,schema 校验强制不靠运行时拦截):
|
||||
# 真视窄域——effect_kinds 含 mine_reveal 的活行 target 必须 area_3x3(真视一次最多 3×3,禁全图看雷);
|
||||
# board_wide 仅恢复推理原料类——target=board_wide 的活行 effect_kinds 不得含 mine_reveal(现行无此类活行,
|
||||
# 显影载体待 Alpha 重定后落位)。
|
||||
# 同调扩列字段:
|
||||
# form ∈ {"", "passive", "active_charged"}(空 = 过渡形态,现行表零空行;
|
||||
# passive = 装配整局生效;active_charged = 每冒险充能、挖掘期发起);
|
||||
# charges_per_adventure(active_charged ≥1 / passive 恒 0);slot_cost(同调行恒 1——底稿裁决 5,schema 强制);
|
||||
# unlock_requires 谓词行 [{key ∈ 计数键封闭枚举〔UNLOCK_COUNTER_KEYS〕, threshold ∈ [1,999]}](空 = 已解锁——
|
||||
# 首批全解锁合法态,底稿 §2.2 用户裁;正式解锁渠道归 元进度 道具工坊柜台);
|
||||
# effective_rounds(前 N 轮限时件轮数——P4 甲表值化;仅 ap_rounds_front 行消费);
|
||||
# charge_n(充能进度阈值 N——仅 ap_charge_safe 行消费)。
|
||||
# 🔴 零裸 flat 结构护栏(需求卡片 §三 1——机制轴禁无条件属性加项):行键白名单封闭(KEY_WHITELIST 外键 =
|
||||
# 加载致命)+ effect_kinds 封闭枚举只收条件触发/机制修正类 kind——任何「无条件属性加项」类效果不得以
|
||||
# 新 kind 或新键入表(返工红线)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 秘宝表 schema:逐 item_id 行(掉落件+同调件)的类型化读取(空表合法态;垂直切片验证:断头时捡到秘宝买回情报/行动点)。
|
||||
## 🔴 零裸 flat 护栏(返工红线):行键白名单封闭 + effect_kinds 封闭枚举只收条件触发/机制修正类——无条件属性加项禁入表。
|
||||
## 承重护栏(schema 强制不靠运行时拦截):真视窄域——真视类活行 target ≤3×3,禁全图看雷。
|
||||
## retired/deferred 标记行免活行校验、不入投放。
|
||||
class_name TreasureItemTable
|
||||
extends Resource
|
||||
|
||||
|
||||
@@ -1,13 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2)
|
||||
# Date: 2026-09-10
|
||||
# 数据配置 VariationTable schema(地形变异;行 = Dictionary,键 variant_id)。
|
||||
# 字段集(枚举抽象,不写死类型):effect/effect_value/trigger/placement 四字段
|
||||
# 把"变异是什么、在哪出现、何时起作用"全部数据化——新增类型 = 清单加行 + 必要时扩充枚举词表,不改读取方。
|
||||
# 门控匹配对象 = board_type 词表(无 biome_tags 字段);
|
||||
# counter_items 字段位保留(反制道具绑定,暂恒空、反制件回填)。
|
||||
# 无 info_mask/cell_constraint 字段(hide_number 在 effect 词表;safe_nonzero 由
|
||||
# 布置域结构保障——初始展开区天然排除,见 battle_orchestrator._place_variants)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 地形变异表 schema:逐 variant_id 行的类型化读取(空清单=零变异合法态;垂直切片验证:完整战斗逐行归因)。
|
||||
## 数据驱动扩展契约:新增类型=表加行+必要时扩枚举词表,不改读取方。
|
||||
## 跨字段互锁(效果↔触发↔布置↔作用域)违例加载期致命(fail-fast)。
|
||||
class_name VariationTable
|
||||
extends Resource
|
||||
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
# 武装确认计时器(只统一计时+脉冲机制,视觉三处各自保留)。
|
||||
# 背景:三处二次确认计时机制异构(AP 条弃图刷新=tween 秒表 / 选路放弃钮=_process 帧驱动
|
||||
# 倒计时 / 战斗总结结算框=纯载荷暂存裸布尔)——本类为单一计时实现。
|
||||
# 保缝纪律:AP 条三探针缝(press_refresh_for_probe/confirm_visible/press_confirm_for_probe)
|
||||
# 语义等价零动;放弃钮真实二击路径零改;结算框挂起态经组合根属性继续可读写(探针接缝)。
|
||||
# 减动效档:档判据单点 motion_still()——脉冲相位由视觉层取 elapsed 自算(1Hz 连续呼吸
|
||||
# 视觉零变化),减动效档视觉层走静态呈现(放弃钮静态半透先例)。
|
||||
## 武装确认计时器:三处二次确认(AP 条弃图刷新/选路放弃钮/战斗总结结算框)共用的计时+脉冲机制,视觉各自保留。
|
||||
## 探针接缝禁动:AP 条 press_refresh_for_probe/confirm_visible/press_confirm_for_probe 三缝与结算框挂起态的组合根读写面。
|
||||
## 减动效档判据单点 motion_still()——视觉层共用此处取相位/静态化,禁各自内联 motion_scale 判断。
|
||||
class_name ArmedTimer
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-09-12(code-review 修复批——自 main.gd 拆出,规范 1.1/1.3 文案拼装独立成装配器)
|
||||
# 战斗流程叙事文案装配器:组合根在模式流转点的玩家可见文案(棋盘日志横幅 / 节点行 / 终局文案 /
|
||||
# 相位指示)在此统一拼装——main.gd 头注"本类不拼呈现字符串"由本类兑现。静态无状态。
|
||||
# 数值口径注记:胜利文案携带的 HP/道具数 = 关卡载荷快照值(每关口径)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 战斗流程叙事文案装配器:模式流转点的玩家可见文案(棋盘日志横幅/节点行/终局文案/相位指示)统一在此拼装,静态无状态。
|
||||
## 文案内数值 = 载荷快照值(每关口径),非实时现值——日志断言与排障按此口径读。
|
||||
extends RefCounted
|
||||
|
||||
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 营地/商店投影控制器(规范 1.1 单一职责拆件):
|
||||
# 营地面开合/快照投影/锻造·同调·天赋树·Fork 购买与切换 + 商店房购买/离开(pool 与 product 双面)。
|
||||
# 装配纪律(仿 treasure_interact_controller 先例):信号连接不在此发生——campbtn/
|
||||
# camp_overlay 四信号/shop_overlay 两信号由组合根接至本类 on_* 入口;模态栈/呈现刷新/续玩按钮
|
||||
# 刷新经组合根回调注入;runner 随局更替——现值回调注入;写调用唯一经 MetaProgression 购买原语
|
||||
# 与 LevelRunner.buy_*(core 侧单口,本类零直写——拒绝可见 pattern 1 兜底 toast 保留原地)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 营地/商店投影控制器:营地开合/快照投影/锻造·同调·天赋树·Fork 购买切换 + 商店房购买/离开(pool 与 product 双面)。
|
||||
## 信号连接只归组合根(campbtn/camp_overlay/shop_overlay 信号接至本类 on_* 入口);模态栈/呈现刷新/续玩刷新与 runner 现值经组合根回调注入。
|
||||
## 写调用唯一经 MetaProgression 购买原语与 LevelRunner.buy_*——本类零直写,拒绝兜底 toast 保留原地。
|
||||
extends RefCounted
|
||||
|
||||
var db
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 三选一交互控制器(规范 1.1 单一职责拆件):
|
||||
# 三选一停点编排(presented→pick→confirm/refresh→resolved→continue)+ 同调位替换子态
|
||||
#(presented→chosen)+ TP0 令牌池卡片文案装配("kind|tier|feat_id" 复合键)+ 工坊显示名投影。
|
||||
# 装配纪律(仿 treasure_interact_controller 先例):信号连接不在此发生——curio_overlay
|
||||
# 四信号与 adventure 两信号由组合根接至本类 on_* 入口;模态栈/演播后排窗/呈现刷新/终局面/
|
||||
# 推进失败 fatal 经组合根回调注入;adventure/runner 随局更替——现值回调注入;兑付写调用唯一
|
||||
# 经 adventure.pick_curio/apply_node_curio(core 侧单口,本类零直写;无替换子交互——装配不可变契约 1,冒险中零更换途径)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 三选一交互控制器:三选一停点编排(presented→pick→confirm/refresh→resolved→continue)+ TP0 令牌池卡片文案装配 + 秘宝显示名投影。
|
||||
## 信号连接只归组合根(curio_overlay/adventure 信号接至本类 on_* 入口);模态栈/演播后排窗/呈现刷新/fatal 经组合根回调注入,adventure/runner 现值注入。
|
||||
## 兑付写调用唯一经 adventure.pick_curio/apply_node_curio——本类零直写。
|
||||
## 同调装配不可变(冒险中零更换途径)——无替换子交互。
|
||||
extends RefCounted
|
||||
|
||||
const Narrator := preload("res://presentation/battle_narrator.gd")
|
||||
|
||||
@@ -1,13 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-09-13(自 main.gd 拆出——规范 1.1 审视线 / 调试语义单一实现纪律)
|
||||
# 调试模式编排控制器:单场遭遇(第 1/2 层)与连续两层(HP 关内延续)的模式状态机与战斗生命周期。
|
||||
# 职责边界:层序/携带 HP + 战斗结算 生命周期编排(创建 / begin_battle)。
|
||||
# 层间延续 = HP 关内延续(库存与共享 地图战斗资源 已下线)。
|
||||
# 授权边界:与 tune_sim_controller 同款——控制器承接模式编排,
|
||||
# 组合根仍持有全部信号接线(battle_created 先于 begin_battle 发出,接线唯一归组合根)
|
||||
# 与终局 UI 决策;玩家意图写调用(settle_batch / 刷新)不经本类。
|
||||
# 加成生效值经注入 Callable 供给(组合根从面板百分比现算)→ encounter
|
||||
# 显式传入战斗——零表写。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 调试模式编排控制器:单场遭遇与连续两层(HP 关内延续)的模式状态机与战斗生命周期。
|
||||
## 信号接线唯一归组合根——battle_created 必须先于 begin_battle 完成接线;玩家意图写调用(settle_batch/刷新)不经本类。
|
||||
## 加成生效值经注入 Callable 现算、随 encounter 显式传参——零表写。
|
||||
extends RefCounted
|
||||
|
||||
signal battle_created(settlement, level: int, carry_hp: int) # begin_battle 前——组合根完成信号接线
|
||||
|
||||
@@ -1,15 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 实现 GDD:design/ux/battle.md(四区呈现装配器)——读核心只读面(战斗结算 呈现快照 / runner)→
|
||||
# 组装文案/投影 → 驱动各视图 setter。
|
||||
# 高内聚边界:"核心状态 → 呈现文案"的全部翻译集中于此;视图保持零核心依赖;
|
||||
# 静态无状态——呈现不持久化任何核心句柄。
|
||||
# 核心状态读取统一经 战斗结算.presentation_snapshot() 成文快照面——
|
||||
# 禁链式穿透 settlement.enemy_system.hero / settlement.enemy_system.enemies / settlement.status_effects.query_active 一类路径(战斗结算 协作对象已私有化,
|
||||
# 敌人含死亡残位的投影由快照 enemies[] 承载,含 alive/pending_*/effects 字段)。
|
||||
# 更新触发注记(battle.md Data Requirements):旗/拔/移动成功反馈零事件外发(排雷玩法 发射面封闭)——
|
||||
# 经 ActionOutcome 返回值命令式驱动;AP/RAP 无推送信号——组合根每次调用返回后重查;
|
||||
# 增益状态 纯被动容器零信号——状态栏刷新绑 战斗结算 结算编排完成时点。
|
||||
# Date: 2026-09-12(战斗屏改造批;基础 = 2026-09-11 HUD 装配器)
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 呈现装配器:核心状态 → 呈现文案的全部翻译集中于此(战斗屏 B/C/D 区文案与投影),静态无状态。
|
||||
## 核心读取只走 settlement.presentation_snapshot() 成文快照面——禁链式穿透 settlement.enemy_system.* / status_effects 一类内部路径。
|
||||
## 旗/拔/移动反馈与 AP/RAP 无推送信号——组合根每次动作/结算返回后必须重查 refresh,漏调即陈旧呈现。
|
||||
class_name HudPresenter
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,34 +1,8 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Validation Question: 线性第一关(战×2→道具→战×2→恢复→Boss)能否承载"数值提升→通关期望改善"的元进度验证
|
||||
# 实现 GDD:design/ux/battle.md(战斗屏 A/B/C/D 四区 + 全屏 States + 遥测;E 区已随可选类删除下线)。
|
||||
# Date: 2026-09-12(battle.md 战斗屏改造批;基础 = 2026-09-11 HUD框架-lite 组合根)
|
||||
# 组合根(composition root):唯一的模式流转与 core↔view 接线处。
|
||||
# 职责边界:① 构建三屏场景并接线信号(屏壳场景 menu_screen/camp_screen/adventure_screen,视图构建仍归
|
||||
# ui_assembler.gd——规范 1.1,本类只接线;模态层仍归本类程序化装配)
|
||||
# ② 模式管理(正式冒险 AdventureRunner——唯一试玩入口;调试两层编排归 debug_session.gd;单场原语仅探针使用)
|
||||
# ③ 核心写调用只在此处发生(minesweeper.settle_batch / 刷新编排入口 / runner 推进;
|
||||
# 加成值零表写——面板百分比经 runner.set_hero_override / debug_session 生效值 Callable
|
||||
# 以 encounter 参数入战斗,db.hero 运行期只读)
|
||||
# ④ 全屏 States 状态机(挖掘/结算/终局)与一次性提示去重。
|
||||
# 场景结构:三屏 .tscn 屏壳 + 全部模态程序化装配于本类;树序/登记序唯一事实源=LAYER_CONTRACT
|
||||
# (见下——屏内两容器无同时可见态,全部模态在屏壳之上)。
|
||||
# 局生命周期:run_scope.gd 节点持全部局态(adventure/runner/settlement/局态旗/账本)——_begin_session
|
||||
# 创建,会话更替/终局整节点 queue_free()。
|
||||
# autoload:SaveManager/MetaProgression/RngService/ConfigDB 为 autoload(类名加 Core 后缀、autoload 占
|
||||
# 净名),存档读盘挂 autoload _ready。
|
||||
# 核心状态读取只经成文只读面(presentation_snapshot / current_board / current_battle 等)——禁
|
||||
# settlement.enemy_system.hero 一类链式穿透。
|
||||
# 渲染与文案归 views/,核心状态→文案装配归 hud_presenter.gd 与 battle_narrator.gd,节点构建归
|
||||
# ui_assembler.gd,模态层级归 modal_stack.gd,批量模拟编排归 tune_sim_controller.gd,调试模式编排归
|
||||
# debug_session.gd——本类不拼呈现字符串。
|
||||
# 结算行排播归 row_pacer.gd(本类保留探针/测试委托面 _row_queue/pace_delay_for/_flush_row_queue);
|
||||
# 秘宝两步交互归 treasure_interact_controller.gd(本类只接线与转发意图——哨兵坐标不出控制器)。
|
||||
# 模态开合全量走 _open_modal/_close_modal 单口,输入锁 = modal_stack.has_open_excluding(debug_overlay)
|
||||
# 排除式开态查询+三例外(浮窗开态不计入锁);battle 收尾反馈与结算视觉 setter 走 hud_presenter 单通道
|
||||
# (时序敏感演出触发留本类并注释);settlement 相位读取经 presentation_snapshot 成文面、变异表读取直读
|
||||
# 本根 db(settlement.db 即同一实例)——禁 settlement.action_economy / settlement.db 链式穿透。
|
||||
# 接线纪律:呈现层永不直接订阅 排雷玩法/行动经济——只订 战斗结算/runner 转发信号;相位读取仅用于
|
||||
# 驱动视图状态;信号连接只在组合根(row_pacer/treasure_interact_controller 零连接,只收注入)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 组合根:唯一的模式流转与 core↔view 接线处(垂直切片验证:线性第一关承载元进度循环)。
|
||||
## db.hero 运行期只读,加成经 runner.set_hero_override / debug_session 生效值入战斗。
|
||||
## 禁链式穿透 settlement.*(相位读取只走 presentation_snapshot);模态开合只走 _open_modal/_close_modal。
|
||||
## 局态全在 run_scope.gd 节点,禁在屏/视图侧持有局态引用;autoload 节点路径常量单点在 AUTOLOAD_PATH_*。
|
||||
extends Control
|
||||
|
||||
# autoload 节点路径单点(迭代 27 T6 P2-2 降格实现:审计处方「编译期全局名」与本仓 --script
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 实现 GDD:design/ux/interaction-patterns.md(pattern 6 模态 overlay 层级纪律)。
|
||||
# Date: 2026-09-12(code-review 修复批——自 main.gd 拆出,规范 1.1 状态装配独立成类)
|
||||
# 模态层级状态机:登记序 = 树序 = z 遮挡序;打开时显式隐藏树序在其上方的可见层、关闭恢复
|
||||
# (缺陷⑤纪律载体:功能存在 ≠ 功能可达——遮挡关系不得靠树序巧合)。
|
||||
# 纯逻辑零节点构建——组合根持有本类并喂入 Control;不持久化核心状态。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 模态层级状态机:登记序 = 树序 = z 遮挡序,打开显式隐藏其上方可见层、关闭恢复。
|
||||
## 层必须先 register 方可 open/close;遮挡由本类显式记账,不得靠树序巧合。
|
||||
## 纯逻辑类——Control 层由组合根喂入 register。
|
||||
extends RefCounted
|
||||
|
||||
var _list: Array[Control] = [] # 登记序 = z 遮挡序(低 → 高)
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 实现 GDD:design/ux/battle.md(§Events Fired 遥测义务——ux 行族)。
|
||||
# Date: 2026-09-12(战斗屏 ux 遥测)
|
||||
# 试玩日志器(呈现层组件——订阅核心信号持久化 JSONL,供数值分析;卡死诊断转储)。
|
||||
# 职责边界:核心层只发 settlement_snapshot 信号(战斗结算)/既有信号(battle_finished/node_entered/
|
||||
# level_finished/step_row);本组件负责订阅、缓冲与写文件——核心零日志感知(零 UI 依赖不变)。
|
||||
# 文件 = user://logs/playtest_<seed>_<时间戳>.jsonl(每行一次结算/终局/节点的全量状态 JSON)。
|
||||
# ux 行族(呈现层观测,不改 core):ux_round_input_ratio(原始输入动作数∶AP 消耗)、
|
||||
# ux_round_exit{path_tag}(快照 round_facts.path——呈现层只订 战斗结算 的接线纪律下唯一合法来源)、
|
||||
# ux_refresh_attempt / ux_reject / ux_hint_shown(组合根显式上报;无 ux_window_choice——道具窗口已下线)。
|
||||
# 诊断转储 = 全量核心状态 + 最近结算/操作环形缓冲 → user://logs/diag_<时间戳>.json(卡死时点按钮)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 试玩日志器:订阅核心信号逐行落 JSONL(user://logs/playtest_<seed>_<时间戳>.jsonl)供数值分析,卡死诊断转储 diag_*.json。
|
||||
## ux_reject/ux_refresh_attempt/ux_hint_shown 无信号源——依赖组合根显式上报,漏调即缺行。
|
||||
## ap_per_round 须由组合根注入——ux_round_input_ratio 的 AP 消耗口径分母。
|
||||
class_name PlaytestLogger
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 结算行排播泵(规范 1.1 单一职责拆件):
|
||||
# 演出层排播:逻辑先行零回压,行按段分组阶梯延迟进明细带。
|
||||
# 硬契约:核心层零 await 不破——本队列只做信号的"后置消费",结算顺序/结果/时序逻辑零改动(§3 契约 1);
|
||||
# 减动效开=延迟归零走同帧直落快路(行呈现不跳过——§3 契约 5);模态开启前强制排空(明细回看/停点
|
||||
# 覆盖层所见明细带恒完整——排空入口在组合根 _open_modal)。
|
||||
# 装配纪律:视图句柄与呈现刷新回调由组合根注入(本类零信号连接,仅做信号后置消费)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 结算行排播泵:逻辑先行零回压,行按段分组阶梯延迟进明细带。
|
||||
## 硬契约:只做信号的后置消费——结算顺序/结果/时序逻辑零改动;减动效开=延迟归零同帧直落,行呈现不跳过。
|
||||
## 开模态前必须 flush()——明细回看/停点/终局面所见明细带恒完整。
|
||||
## 视图句柄与 refresh_request/pump_ended 回调由组合根注入——本类零信号连接。
|
||||
extends Node
|
||||
|
||||
const PACE_SEGMENT_GAP := 0.3 # 段间阶梯延迟(代拍板:白名单 0.2–0.4s 内取值,追认清单呈报)
|
||||
|
||||
@@ -1,11 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-09-29(最小设置面:音量入口+减动效开关——设置与本地化.md P1)
|
||||
# 系统级设置独立存储(设置与本地化.md:一安装一份、删游戏才消失,
|
||||
# 不进存档与生涯数据两分)。三件最小面:音量(master bus)/全屏/减动效。
|
||||
# 生效侧分工:入口与持久化归本类;音量对声音的生效口径归 音频.md(master bus 单点);
|
||||
# 减动效对动画的分档兑现归 battle.md §Transitions(UiKit.motion_scale 既有承载,结算逐行
|
||||
# 兑现=信息载体只降速不跳过)。
|
||||
# 探针隔离:path 可注入(冒烟/探针禁碰真实 user://settings.cfg——同存档隔离纪律)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 系统级设置独立存储(一安装一份、不进存档与生涯数据):音量(master bus)/全屏/减动效三件最小面,入口与持久化在此。
|
||||
## 探针/冒烟必须经 path 注入隔离——禁碰真实 user://settings.cfg。
|
||||
class_name SettingsStore
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -1,14 +1,8 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 秘宝两步交互控制器(规范 1.1 单一职责拆件):
|
||||
# C 区槽位选中/取消(toggle)→ 棋盘点格使用目标拾取的两步交互状态机 + 库存/叠加层只读投影装配。
|
||||
# 数据源 = runner 级库存只读面(query_inventory/query_overlays)+ 表行投影(display_name/target/effect_kinds);
|
||||
# 写调用唯一经 战斗结算.use_treasure(core 侧四步编排——拒绝零消耗 toast 可辨认)。
|
||||
# 装配纪律:settlement/runner 随关卡逐关更替——经组合根现值回调注入(仿 identity_resolver 只读回调
|
||||
# 先例);呈现句柄(信息面板/toast/棋盘叠加层)由组合根注入;信号连接不在此发生,
|
||||
# info_panel.treasure_slot_clicked 由组合根接至 on_slot_clicked。
|
||||
# 无目标使用显式化:AP 类(target=none)无坐标可给——
|
||||
# 调用面一律 attempt_use(handle)(cell 缺省=null=显式「无目标」),core 契约的
|
||||
# Vector2i 形参收口于本类常量(treasure_items.validate_use 对 ap 行忽略目标值,哨兵不出本类)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 秘宝两步交互控制器:C 区槽位选中/取消(toggle)→ 棋盘点格使用目标拾取的状态机 + 库存/叠加层只读投影装配。
|
||||
## 写调用唯一经 settlement.use_treasure;信号连接只归组合根(info_panel.treasure_slot_clicked 接至 on_slot_clicked)。
|
||||
## settlement/runner 随关卡逐关更替——经组合根现值回调注入。
|
||||
## AP 类(target=none)调用面一律 attempt_use(handle)(cell 缺省=null=显式无目标)——哨兵坐标收口本类,不出控制器。
|
||||
extends RefCounted
|
||||
|
||||
const NO_TARGET := Vector2i(-9, -9) # core use_treasure 形参占位(仅 target=none 行到达——validate_use 忽略该值)
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-09-12(自 main.gd 拆出——规范 1.1/1.2 模拟编排独立成类)
|
||||
# 调整板批量模拟控制器:逐次驱动 关卡自动策略(与 headless 扫描同口径)+ 进度/报告 setter 注入面板。
|
||||
# 职责边界:零核心写——表基线复位由组合根在移交前完成(_apply_hero_override(0,0)),
|
||||
# 加成施加 = 自动策略内部 runner.set_hero_override 单路径;报告文案装配归 HudPresenter。
|
||||
# 组合根只转发 simulate_requested 信号。await 依赖面板所在场景树(进度逐帧刷新)。
|
||||
# 依赖方向:presentation 不 preload smoke——
|
||||
# 驱动实例由调用方构造注入(_driver,须供 run_level(...) 与 smoke/level_autoplay 同款签名);
|
||||
# 构造参数缺省 null = 内部运行时 load 兜底(同种子同口径零漂移)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 调整板批量模拟控制器:逐次驱动关卡自动策略(与 headless 扫描同口径),进度/报告经面板 setter 注入。
|
||||
## 零核心写——表基线复位由组合根在移交前完成,加成施加只走自动策略内部 runner.set_hero_override 单路径。
|
||||
## presentation 不 preload smoke:驱动实例由调用方注入(须供与 level_autoplay 同款 run_level 签名),缺省 null=运行时 load 兜底。
|
||||
extends RefCounted
|
||||
|
||||
const SEED_BASE := 4200 # 模拟种子基(与历史实现同源——同种子可回放)
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 实现 GDD:design/ux/battle.md(四区装配器——组合根的 UI 构建拆分载体)。
|
||||
# Date: 2026-09-12(code-review 修复批:main.gd 回涨 761 行触规范 1.1 审视线——构建拆出)
|
||||
# 高内聚边界(规范 1.1/1.3):视图构建装配器——只做 new / add_child / 布局,
|
||||
# 零信号连接、零核心写调用;返回句柄供组合根接线(接线拓扑唯一归组合根)。
|
||||
# 静态无状态。z 序契约:调用方必须按 build 返回序 addChild(登记序 = 模态遮挡序——缺陷⑤纪律)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 视图构建装配器:只做 new/add_child/布局,静态无状态,返回句柄供组合根接线。
|
||||
## 接线拓扑唯一归组合根——本类零信号连接。
|
||||
## z 序契约:调用方必须按 build 返回序 addChild(登记序 = 模态遮挡序)。
|
||||
extends RefCounted
|
||||
|
||||
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 实现 GDD:design/ux/battle.md(D 区 AP 条 44px——点阵+数字〔pattern 5 点阵资源显示〕、
|
||||
# 停手按钮居左、图例+弃图刷新按钮居右〔雷图右上角〕;弃图刷新确认微交互与常规确认不同位
|
||||
# 〔pattern 7 破坏性确认异位:RAP 扣费 · 旧板旗作废显式代价〕)。
|
||||
# RAP 读数(点阵+数字)在本条、置弃图刷新按钮左邻
|
||||
# (RAP 唯一消费口 = 弃图刷新——就近原则;RAP 清零反馈/资源拒绝脉冲载体同处)。
|
||||
# Date: 2026-09-12
|
||||
# 高内聚边界:纯视图——意图经信号外发(stop_pressed/refresh_confirmed/legend_toggled),
|
||||
# 状态由组合根经 setter 注入;刷新可用性预判 = RAP≥8 读数(行动经济 无推送信号——每次调用返回后重查)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## D 区 AP 条:AP/RAP 点阵读数与停手、图例、弃图刷新入口(弃图刷新为二段确认——RAP 扣费·旧板旗作废显式代价)。
|
||||
## RAP 读数贴弃图刷新消费口(RAP 唯一消费口=弃图刷新);无推送信号——组合根每次核心调用返回后经 setter 重查注入。
|
||||
class_name ApBarView
|
||||
extends PanelContainer
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 实现 GDD:design/ux/battle.md(胜利/失败终局 overlay——金蜡封占位落于扫雷图区中央 + 判定行 +
|
||||
# 明细回看入口 + 继续/返回;失败 = 暮蓝 #5A6C8C 氛围(明度不变)+ 旗化光点收回占位;
|
||||
# pattern 6 模态 overlay 层级纪律——遮挡物隐藏/输入锁定断言归场景探针)。
|
||||
# Date: 2026-09-12(扩展自 node_overlay 的战斗终局职责分离)
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 战斗/冒险终局 overlay(模态):判定行+三行账+明细回看入口+继续/返回,失败侧暮蓝氛围。
|
||||
## 摘要文本经 open_victory/open_defeat 由组合根装配喂入——本类零文案装配。
|
||||
class_name BattleEndOverlay
|
||||
extends Control
|
||||
|
||||
|
||||
@@ -1,11 +1,5 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 实现 GDD:design/ux/battle.md(B 区结算明细带改造——挖掘期收起 1 行上轮摘要 / 结算期 84px
|
||||
# 实时流 / 点击展开回看 overlay〔pattern 6 模态纪律〕;行模板「{行为} {值} → {目标}(来源)」、
|
||||
# 聚合计数行、零值行可见、效果行 value≠pool_value 禁相加、未生效四类行 icon/划线形状冗余、
|
||||
# highlight 金框〔flag_hit/clear_reward_h2/perfect_broken〕、击杀标记)。
|
||||
# Date: 2026-09-12(行协议格式化版;现行 10 类;伤害行带掷点读数/档位随行标注 + nat20 金框高亮;
|
||||
# 施放行 = 蓄力行 charge 改型〔增益技 0 伤害施放、具名技能〕)
|
||||
# 高内聚边界:战斗结算 步骤流 → 玩家文案的全部格式化规则内聚于此;来源文案映射来自 SettlementTable。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## B 区结算明细带——战斗结算步骤流到玩家文案的全部行格式化规则内聚于此(挖掘期收起 1 行上轮摘要、结算期实时流)。
|
||||
class_name BattleLogView
|
||||
extends PanelContainer
|
||||
|
||||
|
||||
@@ -1,20 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 实现 GDD:design/ux/battle.md(B 区战斗画面 252px 全宽——主角站桩(左)+ 兑现演出区(中)+
|
||||
# 敌方站桩 ×1–3(右);顶部中央轮次·阶段指示;
|
||||
# 底部结算明细带(布局决策 D1 常驻双舞台分屏))。
|
||||
# Date: 2026-09-12(setter 面契约:set_enemies/clear_enemies/on_step_row_fx/gray_all_enemies
|
||||
# 签名稳定——探针与组合根零改造面)
|
||||
# 结构(Node2D 迁移批——B 区战斗舞台归 Node2D):根壳 Control(类名/
|
||||
# 尺寸 252px/树内位置不变),内部两半区——「Node2D 舞台半区 = SubViewportContainer + SubViewport +
|
||||
# StageWorld(站桩本体 StandeeBody 世界精灵)」+「Control 文本半区 = round_label / stage_center /
|
||||
# log_view 三件」。SubViewport 逻辑分辨率 = 壳层像素 1:1(stretch,禁任何缩放系数——C2/C5);
|
||||
# 字体显式注入挂点 set_world_font(C6,与 BoardView 同款)。
|
||||
# enemy_box = 站桩壳层伴随件容器(Control,子件 = 各站桩的 StatusSlotRow 伴随件,手动定位随世界
|
||||
# 同步——探针计数面不变);hero/enemy 站桩 = StandeeBody(Node2D 世界本体,行为面契约逐项保持 C3),
|
||||
# 其 slot_row 成员 = 壳层伴随件引用;定位同步 = 世界→壳层换算单点 world_to_shell,重建/重排挂点
|
||||
# 调用(零每帧成本,C4)。
|
||||
# 高内聚边界:容器+组合视图——站桩槽位管理、轮次指示、结算行演出分发改由 setter 面承接;
|
||||
# 结算流水格式化归 BattleLogView,核心状态→文案装配归 hud_presenter.gd。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## B 区战斗画面:主角/敌方站桩舞台(SubViewport 世界)+ 轮次·阶段指示 + 结算明细带宿主。
|
||||
## 本类零文案装配:结算流水格式化归 BattleLogView、核心状态→文案装配归 HudPresenter——禁在此拼文案字符串。
|
||||
class_name BattleStageView
|
||||
extends Control
|
||||
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# CellUnit——BoardView SubViewport 世界内逐格渲染件(Node2D)。
|
||||
# 固定叠层序(Node2D 迁移批 Decision 4):砖面底 < 变异纹带 < 数字/徽章 < 旗 < 焦点高亮——全部程序化
|
||||
# _draw 占位视觉;每层留 texture 槽位(art-bible §8.2 格面 32×32 暂定档——终稿 1:1 换入,
|
||||
# 纹理加载未实现)。无 class_name(类名缓存面纪律——BoardView 经 preload 使用)。
|
||||
# 字体:font 槽位缺省 = ThemeDB.fallback_font(与旧 Button 缺省主题字体同源);注入挂点归
|
||||
# BoardView.set_world_font(SubViewport 内主题不自动继承主场景,两舞台复用面)。
|
||||
# 行为等价(缺陷①回归约束):格件常驻定长、逐格重绘由 BoardView 驱动,本类零游戏状态——渲染数据
|
||||
# 全部由 BoardView 每次 paint 写入(bg_sb/glyph/badge),呼吸微光由 BoardView 就地改 bg_sb 边框。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## CellUnit——BoardView SubViewport 世界内逐格渲染件(Node2D),全部程序化 _draw 占位视觉(纹理槽位已留未装载)。
|
||||
## 无 class_name(类名缓存面纪律)——使用方经 preload 引用。
|
||||
extends Node2D
|
||||
|
||||
var cell := Vector2i.ZERO # 板坐标(诊断观测面)
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 实现 GDD:design/ux/battle.md(D 区演出层——清图金粒喷泉+彩纸 3–5s 占位、Boss 紫赤影子爬棋盘
|
||||
# 一次性占位、完美排雷金光带+横幅占位、标中旗加重弹道占位;全部程序化色板原语,真实美术归 战斗表现)。
|
||||
# Date: 2026-09-12
|
||||
# 高内聚边界:纯演出——组合根按核心信号调用 play_*;本类零核心依赖、不自持游戏状态。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## D 区演出层:清图喷泉/Boss 影子/完美排雷光带/标中旗弹道/挥铲三帧等一次性占位演出。
|
||||
## 组合根按核心信号直调 play_*;素材缺位静默回退(演出层不设断言面)。
|
||||
class_name BoardFxView
|
||||
extends Control
|
||||
|
||||
|
||||
@@ -1,23 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 实现 GDD:design/ux/battle.md(战斗屏 D 区 BoardView——格态/悬停预承诺光标/可挖域呼吸微光/
|
||||
# BFS 路径预览/奖励徽章/结算期去饱和锁输入)。
|
||||
# Date: 2026-09-12(battle.md 战斗屏改造批;基础 = 2026-09-11 HUD框架-lite 版)
|
||||
# 棋盘渲染本体 = Control 壳 + SubViewportContainer + SubViewport + BoardWorld(Node2D) +
|
||||
# CellUnit(Node2D)(Node2D 迁移批)。对外契约:
|
||||
# 类名/extends/三信号/click_cell/_cells 键面(Vector2i→格单元,值 Button→CellUnit)/
|
||||
# board()/set_desaturated()/set_identity_resolver()/set_variant_mask_resolver()/set_cell_area()/
|
||||
# rebuild()/refresh()/set_dig_glow_enabled()——探针与组合根零改造。
|
||||
# 命中 = 壳层 _gui_input + 板级公式单点换算(Node2D 迁移批 Decision 3,_cell_at 为唯一公式函数;
|
||||
# SubViewportContainer 逻辑分辨率恒等于板像素尺寸(stretch 1:1,无缩放比),换算只需减居中偏移)。
|
||||
# 程序化占位视觉:数字三档/旗/徽章/危险红/变异遮蔽 "?"/呼吸微光/悬停/路径预览/R₀ 豁免;
|
||||
# CellUnit 叠层 texture 槽位留好(纹理资产接 CellUnit)。只读属性 cell_size 为格尺寸契约出口。
|
||||
# 英雄 = BoardWorld 独立 Sprite2D(移动实体不进格面语义——计划书 §3.A;refresh diff last_hero_pos
|
||||
# 驱动位移 Tween+站/走两帧+flip_h 朝向;素材缺位回退格内字形「人」);挖掘 = 挥铲三帧特效
|
||||
# (BoardFxView)+角色弹跳 Tween;格面五 texture 槽位固定。
|
||||
# 高内聚边界:只读 排雷玩法 查询面(+地图战斗资源 身份解析回调)做渲染与意图识别,动作经信号外发——不调用核心写接口
|
||||
# (settle_batch 归组合根编排),不持久持有战斗态(minesweeper 引用随 refresh 更新,仅作只读查询)。
|
||||
# 行为等价:格件常驻、逐格重绘在 refresh 内完成,无布局回流(缺陷①回归约束——CellUnit 定长不增删,
|
||||
# 重建仅在换板时发生)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 战斗屏 D 区棋盘视图:格态渲染、悬停预承诺光标与路径预览、奖励徽章与玩家意图识别(意图经信号外发)。
|
||||
## 素材禁 preload——一律 UiKit.load_tex 装载(素材不入 git),任一缺位静默回退程序化平色/字形,不刷错误。
|
||||
class_name BoardView
|
||||
extends Control
|
||||
|
||||
|
||||
@@ -1,13 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# BoardWorld——棋盘 Node2D 世界根(SubViewport 内
|
||||
# CellUnit 容器)。职责单点:世界级材质挂点(set_desaturated 去饱和挂此处,CellUnit
|
||||
# use_parent_material 链下随世界灰化)+ 主题/字体显式注入槽位(SubViewport 不自动继承主场景
|
||||
# Control 主题(Node2D 迁移批 Negative 项);两舞台共用骨架(Decision 5)。
|
||||
# 无 class_name(类名缓存面纪律——BoardView 经 preload 使用)。
|
||||
# 板块伪立体绘制(正俯视纸雕风):
|
||||
# 顶面方格不变(数字可读性硬指标不受伤),厚度全部画在网格矩形外的正面/右侧悬崖带:
|
||||
# 正面(背光暗)+右侧(微受光)+列分隔缝(ITB 悬崖列感)+岩层横纹+底部悬浮影(厚档)+
|
||||
# 顶面接触 AO。零布局/命中改动(悬崖向网格外延展,世界尺寸由 BoardView._update_world_size 加 D)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## BoardWorld——棋盘 Node2D 世界根(SubViewport 内 CellUnit 容器):世界级去饱和材质与字体注入挂点。
|
||||
## 无 class_name——使用方经 preload 引用。
|
||||
extends Node2D
|
||||
|
||||
var board_font: Font = null # 字体注入槽位(null = ThemeDB.fallback_font——与旧 Button 缺省主题字体同源)
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 实现 GDD:design/ux/battle.md(D 区扫雷图 ~760×548 容器〔底行 548——原 A 区顶栏空间并入〕——顶部 AP 条 44px〔左:点阵+停手;
|
||||
# 右:图例+弃图刷新〕、棋盘主体居中、toast 槽上缘内侧、演出层)。
|
||||
# Date: 2026-09-12
|
||||
# 高内聚边界:容器组合 + 信号转发——动作意图全部信号外发到组合根,零核心写调用。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## D 区容器:AP 条+棋盘+toast+演出层+两枚角标的组合壳,子件信号原样转发组合根(组合根只接线一处)。
|
||||
class_name BoardZoneView
|
||||
extends PanelContainer
|
||||
|
||||
|
||||
@@ -1,19 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-09-21(营地覆盖层呈现;营地统一重排——四柜台并排:树淬炼柜台=树脊柱界面形态=主界面 /
|
||||
# 锻造工坊柜台〔钥匙门:forge_workshop 点亮前锁定态,点亮=工作间两区六路线行板〕/
|
||||
# 秘宝匣柜台〔钥匙门:ks_workshop 点亮前锁定态,点亮=现工坊内容整体迁入——六行+同调装配段+Y 升级行〕/
|
||||
# 奖励格图鉴柜台常开独立位;宽度不足横向滚动条;无属性锻造柜台
|
||||
# 〔生命唯一入口=树脊柱、攻/AC 唯一入口=锻造工坊路线〕)。
|
||||
# 锁定态零副作用纪律:锻造工坊工作间锁定态(钥匙未点亮)开/关零副作用
|
||||
# ——零写档、零报错、面板内无任何可交互购买路径(锁定行纯文案;点亮后交互面归行板意图信号)。
|
||||
# 信号面/投影契约:buy_requested(attr)〔现仅 Y 刷新升级行消费——装配段双入口之一 Q1 裁乙〕/closed、
|
||||
# attune_toggled/tree_buy_requested/tree_fork_toggled、forge_buy_requested/forge_unlock_requested/
|
||||
# forge_select_requested(锻造三意图;写口唯一归 MetaProgression 锻造写口族)、
|
||||
# open_camp(data)/refresh_camp(data)。
|
||||
# 挂接方式:开合与开始层互斥仿设置面先例(开始覆盖层非模态且树序在后——打开本层前由组合根
|
||||
# 隐藏开始层,规范 2.3 遮挡纪律)。
|
||||
# 高内聚边界:纯视图 setter 面——账本快照经组合根喂入(MetaProgression 只读投影),购买/关闭
|
||||
# 意图经信号外发——零核心写调用、零 MetaProgression 持有。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 营地覆盖层:树淬炼/锻造工坊/秘宝匣/奖励格图鉴四柜台只读投影,购买与切换意图经信号外发。
|
||||
## 柜台锁定态(钥匙未点亮)开/关零副作用——零写档零报错、锁定行纯文案无可交互购买路径。
|
||||
## 开合与开始层互斥归组合根承接(打开前隐藏开始层)。
|
||||
class_name CampOverlay
|
||||
extends Control
|
||||
|
||||
|
||||
@@ -1,16 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 生涯覆盖层·只读全屏页(期一;设计权威 design/gdd/systems/跨局循环/生涯.md 期一范围)。
|
||||
# 呈现口径:汇总段两类六项(冒险总局数/通关局数/各关通关次数/Boss 首杀/Boss 总击杀/
|
||||
# 钥石余额——逐行只读;不统计天赋树与账号成长态,只统计终身计数);登记 modal_stack
|
||||
# 营地同档(设置层旁、确认弹窗之前——登记序=树序=z 序,组合根 addChild 同位);零跳转
|
||||
# (页内零「前往他处」入口,仅只读展示+关闭)+局内不放生涯入口(开始覆盖层「营地与系统」组唯一入口)。
|
||||
# 期二/期三内容(历史回看/图鉴/单局明细)零触碰——页内无任何期二占位件。
|
||||
# 只读契约:数据快照由组合根 open_career 喂入(每次开层实时读 SaveManager
|
||||
# 计数访问器 + MetaProgression 访问器重建——状态面板 R4 同构,快照仅单次开层生命周期,跨开层
|
||||
# 零持有);本类零核心访问、零写通路——唯一信号 closed(关闭意图,组合根经模态栈单口收口)。
|
||||
# 零动效(状态面板 P4 甲先例同款):直开直关,无 tween 无 AnimationPlayer。
|
||||
# R1 公共件单点:全部构成件经 UiKit 工厂产出(page_shell/label/button/keystone_badge),
|
||||
# 零新素材零新色值零新字体零自建样式。页壳=page_shell 暖亮底(商店同壳——主菜单页族形态)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 生涯页·只读全屏页:跨局终身计数汇总(不统计天赋树与账号成长态)。
|
||||
## 入口唯一在开始覆盖层「营地与系统」组、局内不放;页内零跳转零动效(直开直关)。
|
||||
## 构成件全部经 UiKit 工厂产出——禁新素材/新色值/自建样式。
|
||||
class_name CareerOverlay
|
||||
extends Control
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-09-29(迭代 8 二轮修改批 A——新冒险互斥确认弹窗化,用户目检裁决:
|
||||
# 按钮文字换面 → 实底确认弹窗「开新冒险 + 取消」)
|
||||
# 通用确认弹窗(实底石板皮面板,与营地/设置/图例同族视觉):open(text, confirm_label, cancel_label)
|
||||
# 双钮外发 confirmed/cancelled——语义装配归调用方,本类零业务触碰(纯视图边界规范 1.3)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 通用确认弹窗:open(text, confirm_label, cancel_label) 双钮外发 confirmed/cancelled。
|
||||
## 文案与按钮语义装配归调用方——本类零业务触碰。
|
||||
class_name ConfirmDialog
|
||||
extends Control
|
||||
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-10-01(三选一选择面承载)
|
||||
# 提升三选一覆盖层(模态):非末关通关的选择停点呈现——部分回血反馈 + 三卡点选 + 确认兑付。
|
||||
# 高内聚边界:文案拼装归 Narrator(组合根喂入),选择意图经信号外发;视图零核心引用。
|
||||
# 交互范式 = node_overlay choice_box 按钮族 + 选路两段式(点选→确认)复用,零新原语。
|
||||
# 状态机:pick(三卡点选→确认)→ result(兑付反馈→继续)。无 replace 子态——
|
||||
# 装配不可变契约 1(冒险中零更换途径)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 提升三选一覆盖层(模态):通关停点的三卡点选→确认→兑付反馈两态呈现。
|
||||
## 文案拼装归 Narrator 经组合根喂入——本类零文案装配。
|
||||
class_name CurioPickOverlay
|
||||
extends Control
|
||||
|
||||
|
||||
@@ -1,14 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-10-04(主菜单调试三散件(随机种子/角色数值调整板/两层调试入口)收一张调试浮窗)
|
||||
# 开发调试浮窗:全局可开(调试会话恒开,启动即开〔组合根 _ready〕+战斗屏 HUD/关卡地图屏
|
||||
# 两枚角标再开;遮挡语义=ModalStack 登记制:他模态开时暂隐、关后自动恢复)。
|
||||
# 当局数据只读区块=本局种子唯一查看位(六项)。
|
||||
# 列表页形态可扩展:后续调试项按区块往下追加,超高滚动。
|
||||
# 纯视图边界(规范 1.3):数值应用/批量模拟/对局启动全部经信号外发由组合根承接
|
||||
#(apply_requested / simulate_requested / debug_levels_requested / closed);
|
||||
# 当局数据经 update_run_data setter 喂入(只读投影零回读);模拟进度与报告经 setter 注入——
|
||||
# 零核心写、不拼报告文案(装配归 HudPresenter)。零动效(零 tween/AnimationPlayer)。
|
||||
# 探针接缝(合成输入走真实翻译出口口径):press_apply_for_probe 等三键 = 按钮真实信号路径。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 开发调试浮窗:全局可开(组合根启动即开+两屏角标再开),当局数据只读区块为本局种子唯一查看位。
|
||||
## 扩展调试项按区块往下追加(超高滚动);模拟报告文案装配归 HudPresenter——本类零动效零文案装配。
|
||||
class_name DebugOverlay
|
||||
extends Control
|
||||
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 实现 GDD:design/ux/battle.md(C 区角色信息 240×548:
|
||||
# 攻击(+修正来源角标)/护甲 AC 数据框 + 秘宝槽(预留)+ 特性列表(预留)。
|
||||
# HP 条/立绘占位/状态效果槽/RAP 池/GP/钥石退役——HP 与状态唯一展示面 = B 区站桩(同一数据
|
||||
# hud_presenter 双投喂 B/C 两区的重复展示);RAP 迁 D 区 AP 条(贴弃图刷新消费口);
|
||||
# GP(中循环)/钥石(大循环)迁出战斗屏)。
|
||||
# Date: 2026-09-12
|
||||
# 高内聚边界:纯视图 setter 面——装配(含修正文案/AC 投喂)归 hud_presenter.gd;定长槽 + clip_contents
|
||||
# (缺陷①回归约束)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## C 区角色信息面板:攻击/AC 数据框+秘宝槽+特性持有段(空态隐藏)。
|
||||
## 装配与文案(修正来源角标/AC 投喂)归 HudPresenter——本类零文案装配。
|
||||
class_name HeroInfoPanelView
|
||||
extends PanelContainer
|
||||
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 实现 GDD:design/ux/battle.md(D 区图例按钮 + 模态 overlay——格态语义图例;
|
||||
# 状态槽空态说明成文载入〔增益状态 D1×①〕)。
|
||||
# Date: 2026-09-12
|
||||
# pattern 6 模态 overlay 层级纪律:打开时由组合根隐藏上方遮挡层 + 锁棋盘输入;
|
||||
# 本类自持开关(open/close),探针断言"打开后自身 visible"——遮挡物断言归场景探针。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 格态语义图例模态(自持 open/close 开关)。
|
||||
class_name LegendOverlay
|
||||
extends Control
|
||||
|
||||
|
||||
@@ -1,17 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-09-17(关卡节点地图 v1.0 图版选路呈现)
|
||||
# 布局决策(level-map.md):① 三停点标题定稿 ② 图上点击选路唯一通道——候选节点亮金描边 = 可点目标,
|
||||
# 悬停预承诺(描边加粗+指针)后点击提交;press_candidate 探针入口走图上命中同路径
|
||||
# ③ 放弃冒险二次确认——首击转确认态(文案+危险红脉冲约 3 秒超时回落),二击提交
|
||||
# ④ 顶栏语境:关卡名(level_row.display_name)+ GP 常驻徽章
|
||||
# ⑤ 底部状态栏:生命/属性/特性三组常读(零加成隐藏),放弃按钮右端异位
|
||||
# 关卡画面 = 独立屏(Level Map Screen):全屏不透明独占呈现——激活期战斗屏宿主
|
||||
# 由组合根整体隐藏(非暗幕半透、零透出)。零自动推进的玩家停点语义不变:唯一前进通道 =
|
||||
# 图上点候选节点 → route_chosen(node_id) → 组合根转 runner.pick_next_node。
|
||||
# 高内聚边界:只读 runner 成文出口(nodes()/visited_ids()/node_index/next_candidate_ids()/level_row/
|
||||
# hero_hp/gp/effective_*/bonus)做渲染,无任何写面;图形为程序化占位质量(占位纪律)。
|
||||
# 放弃入口:选路停点 = 天然非战斗期(接口契约:战斗中放弃一律拒绝),按钮常驻底栏右端;
|
||||
# 可见性归组合根(只在冒险模式开——放弃的语义对象是"整局冒险";调试两层无节点图天然不可达)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 关卡画面·独立屏:全屏不透明独占呈现(激活期战斗屏宿主由组合根整体隐藏),节点图选路呈现。
|
||||
## 前进唯一通道=图上点候选节点(route_chosen 外发)——零自动推进;放弃入口可见性归组合根(仅冒险模式开)。
|
||||
class_name LevelMapScreen
|
||||
extends Control
|
||||
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-09-11
|
||||
# 关卡节点覆盖层(模态):奖励点/恢复点兑付结果的确认呈现。
|
||||
# 高内聚边界:节点文案的玩家可读化(谁获得什么/回复多少)内聚于此;"继续"意图经信号外发。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 关卡节点覆盖层(模态):奖励点/恢复点兑付结果的确认呈现;节点文案的玩家可读化内聚于此。
|
||||
class_name NodeOverlay
|
||||
extends Control
|
||||
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-09-29(最小设置面)
|
||||
# 设置覆盖层(纯视图边界规范 1.3 同款):音量滑杆/全屏/减动效三件+返回(退出游戏已提级开始菜单)。
|
||||
# 生效与持久化全经 SettingsStore 单点(实时应用+即改即存);本类零核心触碰。
|
||||
# 减动效开关 = 设置面唯一入口(旧测试调整板开关已移除)。
|
||||
# 探针接缝:retarget(store) = 隔离存档换注口(同 camp 换注先例);控件引用公有只读供断言。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 设置覆盖层:音量/全屏/减动效三件+返回;生效与持久化全经构造注入的 SettingsStore——本类零落盘。
|
||||
## 减动效开关唯一入口在设置面;探针/冒烟经 retarget(store) 换注隔离存档,禁碰真实 user://settings.cfg。
|
||||
class_name SettingsOverlay
|
||||
extends Control
|
||||
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 实现 GDD:design/ux/battle.md(§Transitions 结算逐行兑现——B 区因果演出链骨架:
|
||||
# 结算轮光带自棋盘区横扫 → 伤害/治疗弹道自棋盘飞向敌我站桩 → 受击闪白与血条递减由站桩侧承接)。
|
||||
# 位置语义:全屏覆盖层(A–D 区之上、模态之下),只做跨区飞行的演出载体——棋盘区内演出
|
||||
# (清图金粒/完美排雷横幅/标中旗弹道/Boss 影子)仍归 board_fx_view。
|
||||
# 高内聚边界:纯演出——组合根按结算信号调用 play_*,传全局坐标(组合根持有棋盘与站桩两域句柄);
|
||||
# 本类零核心依赖、不自持游戏状态、mouse_filter 全忽略(不劫持输入)。
|
||||
# 动画密度/缓动曲线归战斗表现样张批终稿——本批落"因果全程可见"骨架(规划兑现 P2 义务)。
|
||||
# Date: 2026-09-20(结算演出链批)
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 结算演出层:跨区弹道/光带等结算兑现演出载体(A–D 区之上、模态之下);棋盘区内演出归 BoardFxView。
|
||||
## 组合根按结算信号调 play_* 传全局坐标;mouse_filter 全忽略不劫持输入。
|
||||
class_name SettlementFxView
|
||||
extends Control
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 实现 GDD:design/ux/battle.md(B 区结算明细回看——模态 overlay:完整流水逐行、只读、关闭恢复;
|
||||
# pattern 6 模态 overlay 层级纪律——打开时组合根隐藏上方遮挡层 + 锁棋盘输入,场景级断言承载)。
|
||||
# Date: 2026-09-12
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 结算明细回看模态:完整流水逐行只读呈现。
|
||||
## 流水 BB 文本经 open() 整段喂入——本类零格式化,格式化规则归 BattleLogView。
|
||||
class_name SettlementReviewOverlay
|
||||
extends Control
|
||||
|
||||
|
||||
@@ -1,13 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-09-21(GP+商店房实施批——商店房覆盖层呈现)
|
||||
# 商店覆盖层(模态):标题「商店」/ 金币余额 / 商品卡陈列 / 购买按钮(余额不足禁用置灰)/ 离开按钮。
|
||||
# 模态挂接方式仿既有覆盖层(legend_overlay 现成参照——dim + CenterContainer + box,组合根
|
||||
# _register_modal 收口层级)。
|
||||
# 双面承载(M-4 迭代 11 第②批 T4):legacy 面 = 三商品卡全陈列(open_shop/refresh_state——shop=off
|
||||
# 对照承载原样保留);pool 面 = 共享池货架三选一同构卡(open_shelf——进店抽 3 + 买 1 全重抽反馈 +
|
||||
# 库存余量就近呈现,买后组合根重投喂货架整架重建)。高内聚边界:纯视图 setter 面——商品/货架快照
|
||||
# 与余额经组合根喂入(runner 投影现算现价,视图零复算定价公式),购买/离开意图经信号外发——
|
||||
# 零核心写调用、零 runner 持有。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 商店覆盖层(模态):legacy 固定三件面与 pool 共享池货架面双承载,购买/离开/刷新意图经信号外发。
|
||||
## 商品/货架快照与余额经组合根投喂(现价=runner 投影)——本类零定价复算。
|
||||
class_name ShopOverlay
|
||||
extends Control
|
||||
|
||||
|
||||
@@ -1,13 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# StageWorld——B 区战斗舞台 Node2D
|
||||
# 世界根(SubViewport 内站桩本体容器)。分工:Node2D = D 区棋盘 + B 区战斗舞台;
|
||||
# 与 BoardWorld 同构。职责单点:主题/字体显式注入槽位(SubViewport 不自动继承主场景
|
||||
# Control 主题(2026-09-12 场景结构裁决);set_world_font 同款挂点,null = ThemeDB.fallback_font 与
|
||||
# 旧 Label 缺省主题同源)+ 站桩本体装载面。无 class_name(类名缓存面纪律——
|
||||
# BattleStageView 经 preload 使用)。
|
||||
# 坐标空间钉死:世界内 = 局部排布坐标(SubViewport 逻辑分辨率 =
|
||||
# 壳层像素 1:1,无缩放系数——C2/C5);壳层/fx 层 = 全局含容器偏移,换算单点在
|
||||
# BattleStageView.world_to_shell()。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## StageWorld——B 区战斗舞台 Node2D 世界根(SubViewport 内站桩本体容器,与 BoardWorld 同构)。
|
||||
## 无 class_name——经 preload 引用;世界内坐标=局部排布,壳层/fx 坐标换算单点在 BattleStageView.world_to_shell()。
|
||||
extends Node2D
|
||||
|
||||
var world_font: Font = null # 字体注入槽位(null = ThemeDB.fallback_font——BattleStageView.set_world_font 注入)
|
||||
|
||||
@@ -1,20 +1,7 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 实现 GDD:design/ux/battle.md(B 区全站桩形态——主角与敌人均为无框立绘+底座,
|
||||
# 英雄卡/敌人卡卡片式整体退役禁再提)。
|
||||
# 站桩本体 = Node2D 世界精灵(B 区战斗舞台归 Node2D)。行为面契约逐项保持:
|
||||
# set_data/set_hero/_set_hp/set_idle/set_effects/set_effects_cleared_feedback/set_order/set_pending/
|
||||
# _play_intent_motion/set_portrait_texture(tex,flip)/mark_dead/is_dead/flash_hit/_revive/
|
||||
# _update_name_line/_refresh_portrait_glyph(调用点 hud_presenter/main/探针零改造目标——C3)。
|
||||
# 表现基线(C9):立绘贴图(flip/NEAREST/整数 2× 档)+ 底座 + 血条
|
||||
# (直角递减 tween)+ 顺位徽标 + 意图徽标(弹入+立绘前倾一次性动画)+ 名字行(纯名+护甲类型
|
||||
# 图标——AC 不展示)+ 受击闪白 + 死亡灰化摇摆塌陷(禁瞬消)+ 复活 + 字形占位
|
||||
# 回退(人/▂/▆/█/✕/敌)。代拍板默认:①状态图标行(slot_row)与悬停 tooltip 保留
|
||||
# Control 载体挂壳层(tooltip 机制零返工)——本体的 slot_row 成员 = 壳层伴随件引用;
|
||||
# ②状态行隐藏时序 = 随 mark_dead 同拍隐藏;③清空反馈微文案挂伴随件父层(壳层)。
|
||||
# 文字全部经 draw_string + 世界字体(world.world_font 或 ThemeDB.fallback_font——C6 挂点链)。
|
||||
# 坐标空间:本节点 position/box = SubViewport 世界内局部排布;壳层换算归
|
||||
# BattleStageView.world_to_shell 单点(C4)。
|
||||
# 无 class_name(类名缓存面纪律——BattleStageView 经 preload 使用)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 站桩本体:B 区主角/敌人无框立绘+底座+血条+顺位/意图徽标的世界精灵(Node2D)。
|
||||
## 站桩形态为定案——禁回卡片式;立绘素材缺位回退字形占位;击杀呈现禁瞬消(灰化塌陷)。
|
||||
## 无 class_name——经 preload 引用;壳层坐标换算单点在 BattleStageView.world_to_shell()。
|
||||
extends Node2D
|
||||
|
||||
const CHARGE_SKILL_IDS := ["heavy"]
|
||||
|
||||
@@ -1,13 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 局内状态面板·只读。
|
||||
# 呈现口径:入口为战斗屏 HUD / 关卡地图屏常驻角标(入口装配在 ui_assembler/两屏,本类不含入口);
|
||||
# 登记 modal_stack 设置层同档(确认弹窗之前)带 dim 遮罩;展示钥石余额+进度概览
|
||||
# (道具工坊六件解锁态 / 天赋树已购概览——层内行序与分组复用营地屏同序;无属性锻造段);
|
||||
# 进出零动效直开直关(无 tween 无 AnimationPlayer——R5)。
|
||||
# 只读契约:R4 数据只读同源——账面快照由组合根 open_status 喂入(每次开层实时读 MetaProgression
|
||||
# 访问器重建,快照仅用单次开层生命周期,跨开层零持有);本类零核心访问、零写通路——唯一信号
|
||||
# closed(关闭意图,组合根经模态栈单口收口)。R1 公共件单点:全部构成件经 UiKit 工厂产出
|
||||
#(modal_shell/panel_skinned/label/button/keystone_badge),零裸色值零自建样式。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 局内状态面板·只读:钥石余额与进度概览(入口=两屏角标,本类不含入口)。
|
||||
## 账面快照由组合根 open_status 喂入;进出零动效直开直关;构成件全部经 UiKit 工厂产出——禁裸色值自建样式。
|
||||
class_name StatusPanel
|
||||
extends Control
|
||||
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 实现 GDD:design/ux/battle.md(C 区状态效果槽 ×4〔增益状态 D1×①〕——effect_id→定稿 PNG 纹理图标、
|
||||
# 层数角标、剩余结算次数点、悬停 tooltip(来源+语义+剩余);空态 = 槽隐藏(数据框上移补位,
|
||||
# EC12 空态裁决);极性映射 = 战斗结算 SettlementTable 效果语义而非 magnitude 符号〔增益状态 D1×③〕)。
|
||||
# 图标 = 定稿九枚 PNG
|
||||
# (白剑/白盾/白眼+绿↑红↓箭头语言,圣经 §4.6.1 纹样系统)自带极性,裸图标呈现;无程序化占位字形。
|
||||
# Date: 2026-09-12
|
||||
# 高内聚边界:纯视图——效果投影装配归 hud_presenter.gd;增益状态 纯被动容器零信号——刷新绑 战斗结算
|
||||
# 结算编排完成时点(battle.md 更新触发注记)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 状态效果槽行:效果图标+层数角标+剩余点+悬停 tooltip;空态整行隐藏不占位。
|
||||
## 极性映射=战斗结算效果语义(非 magnitude 符号);效果投影装配归 HudPresenter,本类纯被动零信号。
|
||||
class_name StatusSlotRow
|
||||
extends HBoxContainer
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# 实现 GDD:design/ux/battle.md(D 区 toast 槽——非模态提示:拒绝原因双源/voided/chord/
|
||||
# 零合法板;自动消退 2.5s;pattern 1/10 呈现通道)。
|
||||
# Date: 2026-09-12
|
||||
# 高内聚边界:纯呈现——组合根决定何时弹什么文案;本类只管槽位堆叠与消退动画。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 非模态 toast 槽:三槽堆叠自动消退(2.5s),info/warn/gold 三调性。
|
||||
## 弹什么文案归组合根决定——本类只管槽位堆叠与消退,不做提示内容决策。
|
||||
class_name ToastStack
|
||||
extends Control
|
||||
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-09-11(2026-09-20 样式收敛批:全站色板与 StyleBox 工厂单点化)
|
||||
# 呈现层共享小部件工厂 + 全站取色/描边唯一出口——各视图禁再内联 Color8/StyleBoxFlat
|
||||
# 字面量;美术批换皮只改本文件(值 = 收敛时各视图现值快照,本批零视觉变化)。
|
||||
## VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
## 呈现层共享小部件工厂+全站取色/描边唯一出口——各视图禁内联 Color8/StyleBoxFlat 字面量,换皮只改本文件。
|
||||
class_name UiKit
|
||||
extends RefCounted
|
||||
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""verify_comment_only_change.py — 纯注释批次零行为变更机器证明。
|
||||
|
||||
对 git 工作区相对 HEAD 的每个改动 .gd(game/core、game/data、game/presentation):
|
||||
剥离文件头注释区(首个非注释代码行前的全部空行/注释行)后,新旧剩余内容必须逐行一致——
|
||||
证明改动只发生在文件头注释区,代码行为零变更。头注清偿/载体换代一类纯注释批的交付验收
|
||||
配套(code-conventions §1.4.1)。
|
||||
退出码:0=全部通过,1=存在头注区外的改动。用法:python tools/verify_comment_only_change.py
|
||||
"""
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent
|
||||
|
||||
|
||||
def strip_header(lines):
|
||||
"""剥掉头注区(首个非注释非空行前的全部空行/注释行),返回剩余行列表。"""
|
||||
i = 0
|
||||
while i < len(lines):
|
||||
s = lines[i].strip()
|
||||
if s == "" or s.startswith("#"):
|
||||
i += 1
|
||||
else:
|
||||
break
|
||||
return lines[i:]
|
||||
|
||||
|
||||
def main():
|
||||
out = subprocess.run(
|
||||
["git", "diff", "--name-only", "HEAD", "--", "game/core", "game/data", "game/presentation"],
|
||||
cwd=ROOT, capture_output=True, text=True, check=True).stdout.split()
|
||||
if not out:
|
||||
print("[verify_comment_only] 无改动文件")
|
||||
return 0
|
||||
bad = []
|
||||
for rel in out:
|
||||
rel = rel.replace("\\", "/")
|
||||
old = subprocess.run(["git", "show", "HEAD:" + rel],
|
||||
cwd=ROOT, capture_output=True, text=True, check=True).stdout
|
||||
new = (ROOT / rel).read_text(encoding="utf-8")
|
||||
if strip_header(old.splitlines()) != strip_header(new.splitlines()):
|
||||
bad.append(rel)
|
||||
if bad:
|
||||
for rel in bad:
|
||||
print("[verify_comment_only] FAIL 头注区外内容被改动: " + rel)
|
||||
return 1
|
||||
print("[verify_comment_only] ok: %d 个改动文件头注区外逐行一致(零行为变更)" % len(out))
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in new issue
Block a user