@@ -5160,7 +5160,7 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< rect data-graph-role = "structural-frame" data-composition-frame-kind = "region" data-composition-frame-id = "1" data-composition-frame-label = "浮层与对话框(组合根挂载)" x = "90" y = "390" width = "1060" height = "106" rx = "12" class = "c-region" stroke-width = "1" / >
< rect data-graph-role = "structural-frame" data-composition-frame-kind = "region" data-composition-frame-id = "2" data-composition-frame-label = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" x = "66" y = "524" width = "1226" height = "222" rx = "12" class = "c-region" stroke-width = "1" / >
< rect data-graph-role = "structural-frame" data-composition-frame-kind = "region" data-composition-frame-id = "2" data-composition-frame-label = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" x = "66" y = "524" width = "1226" height = "222" rx = "12" class = "c-region" stroke-width = "1" / >
<!-- Connection paths (before components for correct z - order) -->
< path data-edge-from = "main" data-edge-to = "stage" data-edge-key = "0" data-edge-id = "main-stage" data-composition-points = "566,132;566,196;125,196;125,260" d = "M 566 132 L 566 188 Q 566 196 558 196 L 133 196 Q 125 196 125 204 L 125 260" class = "a-default" stroke-width = "1.5" marker-end = "url(#arrowhead)" / >
@@ -5390,8 +5390,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "fine" x = "1044" y = "468" class = "t-frontend" font-size = "7" text-anchor = "middle" > debug_overlay.gd< / text >
< / g >
< g id = "node-save" data-node-id = "save" data-node-label = "存档管理" tabindex = "0" role = "button" aria-label = "聚焦存档管理,save_manager.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "database" data-node-sublabel = "save_manager.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 存档管理 · save_manager.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-save" data-node-id = "save" data-node-label = "存档管理" tabindex = "0" role = "button" aria-label = "聚焦存档管理,save_manager.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "database" data-node-sublabel = "save_manager.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 存档管理 · save_manager.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "96" y = "554" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "96" y = "554" width = "130" height = "48" rx = "6" class = "c-database" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "database" class = "semantic-sigil s-database" transform = "translate(102 560) scale(0.6875)" >
@@ -5402,8 +5402,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "161" y = "592" class = "t-muted" font-size = "9" text-anchor = "middle" > save_manager.gd< / text >
< / g >
< g id = "node-meta" data-node-id = "meta" data-node-label = "元进度" tabindex = "0" role = "button" aria-label = "聚焦元进度,meta_progression.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "database" data-node-sublabel = "meta_progression.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 元进度 · meta_progression.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-meta" data-node-id = "meta" data-node-label = "元进度" tabindex = "0" role = "button" aria-label = "聚焦元进度,meta_progression.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "database" data-node-sublabel = "meta_progression.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 元进度 · meta_progression.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "244" y = "554" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "244" y = "554" width = "130" height = "48" rx = "6" class = "c-database" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "database" class = "semantic-sigil s-database" transform = "translate(250 560) scale(0.6875)" >
@@ -5414,8 +5414,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "309" y = "592" class = "t-muted" font-size = "9" text-anchor = "middle" > meta_progression.gd< / text >
< / g >
< g id = "node-orch" data-node-id = "orch" data-node-label = "战斗编排器" tabindex = "0" role = "button" aria-label = "聚焦战斗编排器,battle_orchestrator.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "battle_orchestrator.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 战斗编排器 · battle_orchestrator.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-orch" data-node-id = "orch" data-node-label = "战斗编排器" tabindex = "0" role = "button" aria-label = "聚焦战斗编排器,battle_orchestrator.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "battle_orchestrator.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 战斗编排器 · battle_orchestrator.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "383" y = "554" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "383" y = "554" width = "130" height = "48" rx = "6" class = "c-backend" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "backend" class = "semantic-sigil s-backend" transform = "translate(389 560) scale(0.6875)" >
@@ -5425,8 +5425,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "448" y = "592" class = "t-muted" font-size = "9" text-anchor = "middle" > battle_orchestrator.gd< / text >
< / g >
< g id = "node-rules" data-node-id = "rules" data-node-label = "扫雷规则" tabindex = "0" role = "button" aria-label = "聚焦扫雷规则,minesweeper_rules.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "minesweeper_rules.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 扫雷规则 · minesweeper_rules.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-rules" data-node-id = "rules" data-node-label = "扫雷规则" tabindex = "0" role = "button" aria-label = "聚焦扫雷规则,minesweeper_rules.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "minesweeper_rules.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 扫雷规则 · minesweeper_rules.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "540" y = "554" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "540" y = "554" width = "130" height = "48" rx = "6" class = "c-backend" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "backend" class = "semantic-sigil s-backend" transform = "translate(546 560) scale(0.6875)" >
@@ -5436,8 +5436,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "605" y = "592" class = "t-muted" font-size = "9" text-anchor = "middle" > minesweeper_rules.gd< / text >
< / g >
< g id = "node-boardgen" data-node-id = "boardgen" data-node-label = "棋盘生成" tabindex = "0" role = "button" aria-label = "聚焦棋盘生成,board_generator.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "board_generator.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 棋盘生成 · board_generator.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-boardgen" data-node-id = "boardgen" data-node-label = "棋盘生成" tabindex = "0" role = "button" aria-label = "聚焦棋盘生成,board_generator.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "board_generator.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 棋盘生成 · board_generator.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "688" y = "554" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "688" y = "554" width = "130" height = "48" rx = "6" class = "c-backend" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "backend" class = "semantic-sigil s-backend" transform = "translate(694 560) scale(0.6875)" >
@@ -5447,8 +5447,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "753" y = "592" class = "t-muted" font-size = "9" text-anchor = "middle" > board_generator.gd< / text >
< / g >
< g id = "node-boarddata" data-node-id = "boarddata" data-node-label = "棋盘数据" tabindex = "0" role = "button" aria-label = "聚焦棋盘数据,board_data.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "database" data-node-sublabel = "board_data.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 棋盘数据 · board_data.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-boarddata" data-node-id = "boarddata" data-node-label = "棋盘数据" tabindex = "0" role = "button" aria-label = "聚焦棋盘数据,board_data.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "database" data-node-sublabel = "board_data.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 棋盘数据 · board_data.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "836" y = "554" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "836" y = "554" width = "130" height = "48" rx = "6" class = "c-database" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "database" class = "semantic-sigil s-database" transform = "translate(842 560) scale(0.6875)" >
@@ -5459,8 +5459,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "901" y = "592" class = "t-muted" font-size = "9" text-anchor = "middle" > board_data.gd< / text >
< / g >
< g id = "node-effects" data-node-id = "effects" data-node-label = "效果引擎" tabindex = "0" role = "button" aria-label = "聚焦效果引擎,effect_engine.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "effect_engine.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 效果引擎 · effect_engine.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-effects" data-node-id = "effects" data-node-label = "效果引擎" tabindex = "0" role = "button" aria-label = "聚焦效果引擎,effect_engine.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "effect_engine.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 效果引擎 · effect_engine.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "984" y = "554" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "984" y = "554" width = "130" height = "48" rx = "6" class = "c-backend" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "backend" class = "semantic-sigil s-backend" transform = "translate(990 560) scale(0.6875)" >
@@ -5470,8 +5470,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "1049" y = "592" class = "t-muted" font-size = "9" text-anchor = "middle" > effect_engine.gd< / text >
< / g >
< g id = "node-adventure" data-node-id = "adventure" data-node-label = "冒险运行器" tabindex = "0" role = "button" aria-label = "聚焦冒险运行器,adventure_runner.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "adventure_runner.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 冒险运行器 · adventure_runner.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-adventure" data-node-id = "adventure" data-node-label = "冒险运行器" tabindex = "0" role = "button" aria-label = "聚焦冒险运行器,adventure_runner.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "adventure_runner.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 冒险运行器 · adventure_runner.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "1132" y = "554" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "1132" y = "554" width = "130" height = "48" rx = "6" class = "c-backend" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "backend" class = "semantic-sigil s-backend" transform = "translate(1138 560) scale(0.6875)" >
@@ -5481,8 +5481,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "1197" y = "592" class = "t-muted" font-size = "9" text-anchor = "middle" > adventure_runner.gd< / text >
< / g >
< g id = "node-levelrun" data-node-id = "levelrun" data-node-label = "关卡运行器" tabindex = "0" role = "button" aria-label = "聚焦关卡运行器,level_runner.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "level_runner.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 关卡运行器 · level_runner.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-levelrun" data-node-id = "levelrun" data-node-label = "关卡运行器" tabindex = "0" role = "button" aria-label = "聚焦关卡运行器,level_runner.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "level_runner.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 关卡运行器 · level_runner.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "96" y = "616" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "96" y = "616" width = "130" height = "48" rx = "6" class = "c-backend" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "backend" class = "semantic-sigil s-backend" transform = "translate(102 622) scale(0.6875)" >
@@ -5492,8 +5492,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "161" y = "654" class = "t-muted" font-size = "9" text-anchor = "middle" > level_runner.gd< / text >
< / g >
< g id = "node-dmgctl" data-node-id = "dmgctl" data-node-label = "伤害控制" tabindex = "0" role = "button" aria-label = "聚焦伤害控制,damage_controller.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "damage_controller.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 伤害控制 · damage_controller.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-dmgctl" data-node-id = "dmgctl" data-node-label = "伤害控制" tabindex = "0" role = "button" aria-label = "聚焦伤害控制,damage_controller.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "damage_controller.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 伤害控制 · damage_controller.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "244" y = "616" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "244" y = "616" width = "130" height = "48" rx = "6" class = "c-backend" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "backend" class = "semantic-sigil s-backend" transform = "translate(250 622) scale(0.6875)" >
@@ -5503,8 +5503,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "309" y = "654" class = "t-muted" font-size = "9" text-anchor = "middle" > damage_controller.gd< / text >
< / g >
< g id = "node-dgmath" data-node-id = "dgmath" data-node-label = "伤害公式" tabindex = "0" role = "button" aria-label = "聚焦伤害公式,damage_math.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "damage_math.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 伤害公式 · damage_math.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-dgmath" data-node-id = "dgmath" data-node-label = "伤害公式" tabindex = "0" role = "button" aria-label = "聚焦伤害公式,damage_math.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "damage_math.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 伤害公式 · damage_math.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "392" y = "616" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "392" y = "616" width = "130" height = "48" rx = "6" class = "c-backend" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "backend" class = "semantic-sigil s-backend" transform = "translate(398 622) scale(0.6875)" >
@@ -5514,8 +5514,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "457" y = "654" class = "t-muted" font-size = "9" text-anchor = "middle" > damage_math.gd< / text >
< / g >
< g id = "node-reward" data-node-id = "reward" data-node-label = "奖励经济" tabindex = "0" role = "button" aria-label = "聚焦奖励经济,reward_economy.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "reward_economy.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 奖励经济 · reward_economy.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-reward" data-node-id = "reward" data-node-label = "奖励经济" tabindex = "0" role = "button" aria-label = "聚焦奖励经济,reward_economy.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "reward_economy.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 奖励经济 · reward_economy.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "540" y = "616" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "540" y = "616" width = "130" height = "48" rx = "6" class = "c-backend" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "backend" class = "semantic-sigil s-backend" transform = "translate(546 622) scale(0.6875)" >
@@ -5525,8 +5525,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "605" y = "654" class = "t-muted" font-size = "9" text-anchor = "middle" > reward_economy.gd< / text >
< / g >
< g id = "node-lottery" data-node-id = "lottery" data-node-label = "技能抽奖" tabindex = "0" role = "button" aria-label = "聚焦技能抽奖,skill_lottery.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "skill_lottery.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 技能抽奖 · skill_lottery.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-lottery" data-node-id = "lottery" data-node-label = "技能抽奖" tabindex = "0" role = "button" aria-label = "聚焦技能抽奖,skill_lottery.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "skill_lottery.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 技能抽奖 · skill_lottery.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "688" y = "616" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "688" y = "616" width = "130" height = "48" rx = "6" class = "c-backend" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "backend" class = "semantic-sigil s-backend" transform = "translate(694 622) scale(0.6875)" >
@@ -5536,8 +5536,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "753" y = "654" class = "t-muted" font-size = "9" text-anchor = "middle" > skill_lottery.gd< / text >
< / g >
< g id = "node-attune" data-node-id = "attune" data-node-label = "同调" tabindex = "0" role = "button" aria-label = "聚焦同调,attunement.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "attunement.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 同调 · attunement.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-attune" data-node-id = "attune" data-node-label = "同调" tabindex = "0" role = "button" aria-label = "聚焦同调,attunement.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "attunement.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 同调 · attunement.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "836" y = "616" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "836" y = "616" width = "130" height = "48" rx = "6" class = "c-backend" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "backend" class = "semantic-sigil s-backend" transform = "translate(842 622) scale(0.6875)" >
@@ -5547,8 +5547,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "901" y = "654" class = "t-muted" font-size = "9" text-anchor = "middle" > attunement.gd< / text >
< / g >
< g id = "node-action" data-node-id = "action" data-node-label = "行动经济" tabindex = "0" role = "button" aria-label = "聚焦行动经济,action_economy.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "action_economy.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 行动经济 · action_economy.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-action" data-node-id = "action" data-node-label = "行动经济" tabindex = "0" role = "button" aria-label = "聚焦行动经济,action_economy.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "action_economy.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 行动经济 · action_economy.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "984" y = "616" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "984" y = "616" width = "130" height = "48" rx = "6" class = "c-backend" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "backend" class = "semantic-sigil s-backend" transform = "translate(990 622) scale(0.6875)" >
@@ -5558,8 +5558,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "1049" y = "654" class = "t-muted" font-size = "9" text-anchor = "middle" > action_economy.gd< / text >
< / g >
< g id = "node-feats" data-node-id = "feats" data-node-label = "特长引擎" tabindex = "0" role = "button" aria-label = "聚焦特长引擎,feats_engine.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "feats_engine.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 特长引擎 · feats_engine.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-feats" data-node-id = "feats" data-node-label = "特长引擎" tabindex = "0" role = "button" aria-label = "聚焦特长引擎,feats_engine.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "feats_engine.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 特长引擎 · feats_engine.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "1132" y = "616" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "1132" y = "616" width = "130" height = "48" rx = "6" class = "c-backend" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "backend" class = "semantic-sigil s-backend" transform = "translate(1138 622) scale(0.6875)" >
@@ -5569,8 +5569,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "1197" y = "654" class = "t-muted" font-size = "9" text-anchor = "middle" > feats_engine.gd< / text >
< / g >
< g id = "node-status" data-node-id = "status" data-node-label = "状态容器" tabindex = "0" role = "button" aria-label = "聚焦状态容器,status_container.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "status_container.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 状态容器 · status_container.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-status" data-node-id = "status" data-node-label = "状态容器" tabindex = "0" role = "button" aria-label = "聚焦状态容器,status_container.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "status_container.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 状态容器 · status_container.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "96" y = "678" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "96" y = "678" width = "130" height = "48" rx = "6" class = "c-backend" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "backend" class = "semantic-sigil s-backend" transform = "translate(102 684) scale(0.6875)" >
@@ -5580,8 +5580,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "161" y = "716" class = "t-muted" font-size = "9" text-anchor = "middle" > status_container.gd< / text >
< / g >
< g id = "node-units" data-node-id = "units" data-node-label = "单位容器" tabindex = "0" role = "button" aria-label = "聚焦单位容器,unit_container.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "unit_container.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 单位容器 · unit_container.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-units" data-node-id = "units" data-node-label = "单位容器" tabindex = "0" role = "button" aria-label = "聚焦单位容器,unit_container.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "unit_container.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 单位容器 · unit_container.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "244" y = "678" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "244" y = "678" width = "130" height = "48" rx = "6" class = "c-backend" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "backend" class = "semantic-sigil s-backend" transform = "translate(250 684) scale(0.6875)" >
@@ -5591,8 +5591,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "309" y = "716" class = "t-muted" font-size = "9" text-anchor = "middle" > unit_container.gd< / text >
< / g >
< g id = "node-treasure" data-node-id = "treasure" data-node-label = "秘宝数据" tabindex = "0" role = "button" aria-label = "聚焦秘宝数据,treasure_items.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "database" data-node-sublabel = "treasure_items.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 秘宝数据 · treasure_items.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-treasure" data-node-id = "treasure" data-node-label = "秘宝数据" tabindex = "0" role = "button" aria-label = "聚焦秘宝数据,treasure_items.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "database" data-node-sublabel = "treasure_items.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 秘宝数据 · treasure_items.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "392" y = "678" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "392" y = "678" width = "130" height = "48" rx = "6" class = "c-database" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "database" class = "semantic-sigil s-database" transform = "translate(398 684) scale(0.6875)" >
@@ -5603,8 +5603,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "457" y = "716" class = "t-muted" font-size = "9" text-anchor = "middle" > treasure_items.gd< / text >
< / g >
< g id = "node-resolver" data-node-id = "resolver" data-node-label = "配置解析" tabindex = "0" role = "button" aria-label = "聚焦配置解析,config_db_resolver.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "config_db_resolver.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 配置解析 · config_db_resolver.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-resolver" data-node-id = "resolver" data-node-label = "配置解析" tabindex = "0" role = "button" aria-label = "聚焦配置解析,config_db_resolver.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "config_db_resolver.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 配置解析 · config_db_resolver.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "540" y = "678" width = "130" height = "48" rx = "6" class = "c-mask" / >
< rect x = "540" y = "678" width = "130" height = "48" rx = "6" class = "c-backend" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "backend" class = "semantic-sigil s-backend" transform = "translate(546 684) scale(0.6875)" >
@@ -5614,8 +5614,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-detail = "context" x = "605" y = "716" class = "t-muted" font-size = "9" text-anchor = "middle" > config_db_resolver.gd< / text >
< / g >
< g id = "node-xvalid" data-node-id = "xvalid" data-node-label = "配置交叉校验" tabindex = "0" role = "button" aria-label = "聚焦配置交叉校验,config_db_cross_validator.gd, 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "config_db_cross_validator.gd" data-node-context = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< title > 配置交叉校验 · config_db_cross_validator.gd · 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / title >
< g id = "node-xvalid" data-node-id = "xvalid" data-node-label = "配置交叉校验" tabindex = "0" role = "button" aria-label = "聚焦配置交叉校验,config_db_cross_validator.gd, 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" aria-pressed = "false" data-node-kind = "backend" data-node-sublabel = "config_db_cross_validator.gd" data-node-context = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< title > 配置交叉校验 · config_db_cross_validator.gd · 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / title >
< rect x = "688" y = "678" width = "170" height = "48" rx = "6" class = "c-mask" / >
< rect x = "688" y = "678" width = "170" height = "48" rx = "6" class = "c-backend" stroke-width = "1.5" / >
< g aria-hidden = "true" data-semantic-sigil = "backend" class = "semantic-sigil s-backend" transform = "translate(694 684) scale(0.6875)" >
@@ -5660,9 +5660,9 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< text data-boundary-label = "" x = "98" y = "413" class = "t-cloud" font-size = "9" font-weight = "600" > 浮层与对话框(组合根挂载)< / text >
< / g >
< g data-graph-role = "structural-frame-label" data-composition-frame-id = "2" data-composition-frame-kind = "region" data-composition-frame-label = "逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)" >
< rect data-graph-role = "structural-frame-label-mask" x = "70" y = "534" width = "339.4 " height = "16" rx = "3" class = "c-mask" / >
< text data-boundary-label = "" x = "74" y = "547" class = "t-cloud" font-size = "9" font-weight = "600" > 逻辑层 core/( 模块与拆件清单 = architecture.md「模块 归属」表)< / text >
< g data-graph-role = "structural-frame-label" data-composition-frame-id = "2" data-composition-frame-kind = "region" data-composition-frame-label = "逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)" >
< rect data-graph-role = "structural-frame-label-mask" x = "70" y = "534" width = "328.59999999999997 " height = "16" rx = "3" class = "c-mask" / >
< text data-boundary-label = "" x = "74" y = "547" class = "t-cloud" font-size = "9" font-weight = "600" > 逻辑层 core/( 目录层级约束 = architecture.md「目录 归属」表)< / text >
< / g >
<!-- Legend -->
@@ -5883,7 +5883,7 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
< h3 > 逻辑层与边界< / h3 >
< / div >
< ul >
< li > • core/ 模块与拆件 全量清单以 architecture.md「模块 归属」表为准,本图只画顶层导航件< / li >
< li > • core/ 全量清单以 architecture.md「目录 归属」表与各文件头注 为准,本图只画顶层导航件< / li >
< li > • ConfigDB/RngService 两单例经 project.godot autoload 全局供给< / li >
< li > • smoke/ 下 13 个测试探针场景属测试基建,不入架构主干< / li >
< / ul >