Files
gplan-2/game/presentation/run_scope.gd
T
DKChan 7a0d57ddb0 feat(迭代27 T1): 波一 场景拆分+局生命周期物化——逐位一致对拍全同
P0-1 三屏场景化(契约2 只拆不重写):
- menu_screen/camp_screen/adventure_screen 三 .tscn 屏壳+壳脚本(视图代码原样构建,
  40+ views 零 .tscn 化);adventure 屏壳内含 level_map/battle 两容器
- main.gd _build_ui 解体=三屏实例化+模态装配+接线;组合根句柄全部保留(探针挂载
  假设 main.X 一级路径零迁移);树序=屏壳在前全模态之下(视觉共存对逐对验算)
- 屏壳根 mouse_filter=IGNORE(ui_input 实证:全屏 STOP 壳吃下层模态鼠标输入)

P0-2 会话物化(裁点①甲 autoload+手工清单消亡):
- run_scope.gd 节点持全部局态(adventure/runner/settlement/7+ 局态旗/账本);
  _begin_session 建会话、终局整节点 queue_free()——_reset_run_scope 三项+
  _on_battle_end_continue 置空四件手工清单删除
- SaveManager/MetaProgression 升格 autoload 3/4 号位(类名加 Core 后缀沿 RngService
  先例;--script 模式编译器不解析裸 autoload 标识符——组合根留读视图属性 get_node 形态)
- 探针隔离改 attach_path 原地重置(set_master_seed 先例);10 探针+pacing 测试迁移

验收(V1 核心=逐位一致对拍):
- parity_anchor 三变体 base/attune/shop×40 局 RUNSUM+JSONL 双面逐位全同(零行为漂移)
- 冒烟 1055→1077/0(+V2 屏壳独立实例化 11 断言+V3 两连局复位 11 断言)
- run_all 25 套+probe click 全绿+render_gate golden 0.00%×3
2026-10-14 20:28:53 +08:00

25 lines
2.3 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
class_name RunScope
extends Node
# 一局会话状态承载(迭代 27 T1——P0-2「局生命周期物化」修复波)。
# 会话 = 一次冒险(开新/续玩)或一次调试两层对局;组合根 _begin_session 创建本节点挂树、
# 会话更替/终局整节点 queue_free()——旧手工复位清单(原 main._reset_run_scope 三项 +
# _on_battle_end_continue 置空四件)随节点释放机制消亡,此后新增跨局字段零新增泄漏点
#(泄漏=低频难复现脏状态的手工契约病灶,审计 P0-2)。
# 纪律:本节点零信号连接、零视图构建、零核心写调用(ADR-0001——信号连接只在组合根):
# 纯状态承载,组合根经 run_scope.X 读写。
var adventure = null # 冒险结构编排器(调试两层恒 null)
var runner = null # 关卡推进器(冒险每关重取 adventure.runner();调试两层恒 null)
var settlement = null # 当前战斗编排器(冒险与调试两层统一读它)
var is_adventure := false # 冒险会话标记(inter 层确认分派与终局分派)
var level_active := false # 对局激活(状态面板入口点亮/刷新受理分派)
var level_screen_active := false # 关卡独立屏激活状态(屏级互斥——形态升格批语义)
var refresh_used_round := 0 # 本轮已受理刷新次数(遥测 round_refresh_index——每轮 round_started 归零)
var boss_active := false # Boss 遭遇变体(阶段指示附 Boss 名)
var was_settling := false # 结算相位上升沿检测(结算轮光带触发——演出链批)
var hints_shown := {} # 一次性非模态提示去重(每 run 一次:chord/no_adjacent)
var settlement_stop_timer := ArmedTimer.new() # 卡⑥ 结算框挂起计时(T3/D3 P4 乙——窗口 0=挂起到显式回落)
var pending_candidates: Array = [] # 结算框挂起期的选路候选暂存(choices_presented 载荷)
var locked_click := {} # 锁期点击缓存(T17 v3.1——最后一次;演播完边沿重放)
var last_gain_amount := 0 # 最近一笔钱包入账(卡⑥ GP 增量取数面——wallet_changed gain 载荷)
var gp_ledger = null # GP 冒险钱包影子账(gp_shadow_ledger.gd 实例——wallet 事件投喂;T3 账本收口波将退役)