merge(master): S9 类型闸修复批与两条工程条目出账 并入 iter37(收口前最后一次并源)

三处冲突全部按「取我方结构+确认对方注解已落新址」处置,零丢弃对方改动:
- main.gd:四解析函数体已由卡② r1-2 搬入 board_resolvers.gd,master 给 _identity_lookup 补的 -> Variant 在新件 identity_lookup:28 同形在位;build_adventure_params 的 SaveManagerCore/MetaProgressionCore 注解经自动合并落住(main.gd:367)
- views/battle_stage_view.gd:卡① d12 已改 (target_id: String, display_name: String) -> Variant,master 对旧一参形态的注解属同址更新,取我方
- views/board_view.gd:查表族/明度归一族已由卡③ r2-1 搬入 tile_palette.gd,master 的 lumas_out: Variant 注解在 tile_palette.gd:134 同形在位
待办清单.md:我方 P0 条目与 master 删两条已完成工程条目自动合并(64 条,S9/S13 条目出账)

合并后复核:13 个触及脚本 --check-only 零 Parse Error;master 修好的 S9 类型闸 PASS(其 26 处补注解零丢失、本批九新件零命中);gdstyle 216/216 基线内、新违规 0、恶化 0
This commit is contained in:
DKChan committed 2026-10-25 18:59:27 +08:00
commit 2dd3ec5640
18 files changed
+53 -99

No files matched your search

+3 -3
View File
@@ -5,7 +5,7 @@ extends RefCounted
# 节点进入横幅(棋盘日志——battle/boss 用;节点编号 = 行进器编号空间读面;行色 = UiKit.HEX_* 语义档单点)
static func node_banner(runner, node: Dictionary, t: String) -> String:
static func node_banner(runner: LevelRunner, node: Dictionary, t: String) -> String:
return "[color=#%s]── 节点 %d/%d · %s(编号 %d)──[/color]" % [UiKit.HEX_LOG_GAIN,
runner.node_index + 1, runner.nodes().size(),
"Boss 房" if t == "boss" else "战斗", runner.node_id_of(node)]
@@ -25,7 +25,7 @@ static func shop_line(gp: int) -> String:
# 选路口行(零自动推进停点——战斗胜利/兑付确认后出现)
static func route_line(candidates: Array, runner) -> String:
static func route_line(candidates: Array, runner: LevelRunner) -> String:
var names: Array[String] = []
for cand in candidates:
names.append("节点 %d" % runner.node_id_of(cand))
@@ -69,7 +69,7 @@ static func phase_text(round_index: int, battle_result: String, waiting: bool, b
# 行集多行时取**首行** display_name(行序即契约的呈现面后果,
# Boss 行集混编护卫时 Boss 名显示可能为护卫名,知情代价登记 敌人系统 v0.15 / 出口报告;
# 每坐标恰一行时无此歧义)
static func boss_name(runner, db) -> String:
static func boss_name(runner: Variant, db: ConfigDb) -> String:
if runner != null:
var node: Dictionary[Variant, Variant] = runner.current_node()
if String(node.get("type", "")) == "boss":
+3 -3
View File
@@ -78,7 +78,7 @@ static func _refresh_hero(stage: BattleStageView, info: HeroInfoPanelView, s: Di
# ---- 行动经济(AP 点阵 / RAP / 弃图刷新按钮态——RAP 读数在本条) ----
static func _refresh_economy(ap_bar: ApBarView, s: Dictionary, db, refresh_remaining: int) -> void:
static func _refresh_economy(ap_bar: ApBarView, s: Dictionary, db: ConfigDb, refresh_remaining: int) -> void:
ap_bar.set_ap(int(s.ap), int(db.action_economy.ap_per_round))
ap_bar.set_rap(int(s.rap))
var digging := String(s.phase) == ActionEconomy.PHASE_ACTIVE
@@ -90,7 +90,7 @@ static func _refresh_economy(ap_bar: ApBarView, s: Dictionary, db, refresh_remai
# 特性持有文案(战斗 C 区与关卡选择页两处共用;空持有=空数组。
# 行形态=逐件「件名 ×N」(非逐流派聚合)——表行
# 无 archetype 字段,聚合形态会空键兜底实显「流派 ×N · 档一」僵尸文案;流派档位非现行机制)
static func feat_holdings_lines(db, held: Array) -> Array[String]:
static func feat_holdings_lines(db: ConfigDb, held: Array) -> Array[String]:
var rlines: Array[String] = []
if db == null or db.feats == null or (db.feats.rows as Array).is_empty() or held.is_empty():
return rlines
@@ -107,7 +107,7 @@ static func feat_holdings_lines(db, held: Array) -> Array[String]:
# 地形变异常驻角标文案(整图变异 id → 文案行;
# 空集 = 空数组=空态隐藏。三行制:变异名+两行效果说明(C 区 240px 宽防裁切)。
# 文案用常规表述,不用俚语
static func board_variant_lines(db, ids: Array) -> Array[String]:
static func board_variant_lines(db: ConfigDb, ids: Array) -> Array[String]:
var lines: Array[String] = []
if db == null or db.variation == null:
return lines
+1 -40
View File
@@ -213,7 +213,6 @@ func _fatal_screen(msg: String) -> void:
MainUiBuild.fatal_screen(self, msg)
# ==================== 模态 overlay 层级管理(pattern 6 / 缺陷⑤——状态机归 modal_stack.gd) ====================
func _register_modal(m: Control, tags: Array = []) -> void:
@@ -364,7 +363,7 @@ func _wire_adventure() -> void:
# 取值=meta.hero_attack_type/hero_armor_type=存档选中路线类型轴,未解锁/异常选中态回退锻造配置默认值)。
# 注:runner 侧 resume_adventure 受理面收 attunement/attune_refresh_y/tree_rules 三键
# (传参/受理两侧对齐)。
static func build_adventure_params(save_manager_ref, meta_ref, extra: Dictionary = {}) -> Dictionary:
static func build_adventure_params(save_manager_ref: SaveManagerCore, meta_ref: MetaProgressionCore, extra: Dictionary = {}) -> Dictionary:
var params: Dictionary[Variant, Variant] = {
"hero_override": meta_ref.hero_override() if meta_ref != null else {},
"attack_type": meta_ref.hero_attack_type() if meta_ref != null else "",
@@ -402,8 +401,6 @@ func _on_adventure_level_started(level_index: int, display_name: String)-> void:
MainAdventureFlow._on_adventure_level_started(self, level_index, display_name)
func _on_runner_node(node: Dictionary, info: Dictionary)-> void:
MainAdventureFlow._on_runner_node(self, node, info)
@@ -412,32 +409,22 @@ func _on_adventure_finished(summary: Dictionary)-> void:
MainAdventureFlow._on_adventure_finished(self, summary)
func _on_battle_end_continue() -> void:
MainAdventureFlow._on_battle_end_continue(self)
func _start_debug_levels() -> void:
MainDebugFlow._start_debug_levels(self)
func _on_debug_battle_created(settlement_ref: BattleOrchestrator, _level: int, _carry: int)-> void:
MainDebugFlow._on_debug_battle_created(self, settlement_ref, _level, _carry)
func _on_debug_battle_ready(settlement_ref: BattleOrchestrator, _level: int, _carry: int)-> void:
MainDebugFlow._on_debug_battle_ready(self, settlement_ref, _level, _carry)
func _on_inter_next_pressed() -> void:
MainAdventureFlow._on_inter_next_pressed(self)
@@ -612,14 +599,10 @@ func _on_node_continue() -> void:
MainAdventureFlow._on_node_continue(self)
func _on_choices_presented(candidates: Array)-> void:
MainAdventureFlow._on_choices_presented(self, candidates)
func _on_route_chosen(node_id: int)-> void:
MainAdventureFlow._on_route_chosen(self, node_id)
@@ -632,14 +615,10 @@ func _enter_level_screen() -> void:
MainAdventureFlow._enter_level_screen(self)
func _exit_level_screen() -> void:
MainAdventureFlow._exit_level_screen(self)
func _on_abandon_requested() -> void:
MainAdventureFlow._on_abandon_requested(self)
@@ -650,8 +629,6 @@ func _open_settings() -> void:
MainOverlayFlow._open_settings(self)
func _on_settings_closed() -> void:
MainOverlayFlow._on_settings_closed(self)
@@ -660,14 +637,10 @@ func _status_data() -> Dictionary:
return MainOverlayFlow._status_data(self)
func _open_status_panel() -> void:
MainOverlayFlow._open_status_panel(self)
func _on_status_closed() -> void:
MainOverlayFlow._on_status_closed(self)
@@ -679,8 +652,6 @@ func _open_career() -> void:
MainOverlayFlow._open_career(self)
func _on_career_closed() -> void:
MainOverlayFlow._on_career_closed(self)
@@ -689,8 +660,6 @@ func _open_save_select() -> void:
MainOverlayFlow._open_save_select(self)
func _on_save_select_closed() -> void:
MainOverlayFlow._on_save_select_closed(self)
@@ -721,14 +690,10 @@ func _on_camp_closed() -> void:
MainOverlayFlow._on_camp_closed(self)
func _camp_data() -> Dictionary:
return MainOverlayFlow._camp_data(self)
func _on_wallet_changed(event: String, gp: int, extra: Dictionary)-> void:
MainOverlayFlow._on_wallet_changed(self, event, gp, extra)
@@ -917,14 +882,10 @@ func _close_debug_overlay() -> void:
MainDebugFlow._close_debug_overlay(self)
func _on_tune_apply(atk_pct: int, hp_pct: int)-> void:
MainDebugFlow._on_tune_apply(self, atk_pct, hp_pct)
func _on_tune_simulate(n: int)-> void:
MainDebugFlow._on_tune_simulate(self, n)
+1 -1
View File
@@ -22,7 +22,7 @@ func _init(db_ref, panel_ref, base_hp: int, driver = null) -> void:
# 驱动解析:注入优先;缺省回退运行时 load(旧行为——编译期反向依赖已解除,运行时口径与拆分前逐位一致)
func _autoplay():
func _autoplay() -> Variant:
if _driver != null:
return _driver
return load("res://sim/level_autoplay.gd") # 与 headless 扫描同口径的自动策略(P3 兜底路径)
+3 -3
View File
@@ -11,7 +11,7 @@ extends RefCounted
# + 结算演出覆盖层(A–D 之上、模态之下——跨区弹道/光带载体)。
# 返回句柄字典:{stage, log_view, info_panel, board_zone, board_view, ap_bar, settlement_fx}
# (返回句柄不含 gp_label/keystone_label——GP/钥石不在战斗屏呈现)
static func build_battle_ui(root: Control, db) -> Dictionary:
static func build_battle_ui(root: Control, db: ConfigDb) -> Dictionary:
# set_anchors_and_offsets_preset(非 set_anchors_preset):后者会把控件重置回最小内容尺寸
# (实测 927×613——缩顶、棋盘 45px 格 ×10 行超出 D 区 333px 高被裁)
root.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
@@ -64,7 +64,7 @@ static func build_battle_ui(root: Control, db) -> Dictionary:
# (本组不含调试浮窗——由组合根直构挂树序最末,见 main._build_ui;
# 本组不含明细回看 overlay——冒险中回看归「生涯」页;
# 本组不含营地覆盖层——在 camp_screen 屏壳构建)
static func build_overlays(host: Control, db) -> Dictionary:
static func build_overlays(host: Control, db: ConfigDb) -> Dictionary:
var legend_overlay := LegendOverlay.new(int(db.action_economy.rap_refresh_cost)) # RAP 行表值注入
host.add_child(legend_overlay)
@@ -94,7 +94,7 @@ static func build_overlays(host: Control, db) -> Dictionary:
#(教学内容归 Beta 帮助手册〔教学引导定稿 P4 丙〕)**;本层无玩法速览牌;
# tooltip 主题归全局主题单点(禁在 root 挂程序化 tooltip 主题)。
# 返回键集如首行所列,接线归组合根)
static func build_start_overlay(host: Control, db = null) -> Dictionary:
static func build_start_overlay(host: Control, db: ConfigDb = null) -> Dictionary:
var overlay := overlay_bg(host, UiKit.BG_BRIGHT)
# 石纹弱质感+斜光带+暗角(demo .tilebg 0.14/.beams/.vignette 三层;
# 石纹层用半透明贴图,非满铺不透。缺位不挂即回退平色)
-1
View File
@@ -873,7 +873,6 @@ func _floor_tile_for(c: Vector2i) -> Texture2D:
return _palette.floor_tile_for(c)
# ---- 自绘光标纹理(镐/封印——引擎内置光标无此语义;程序化占位,headless 跳过) ----
func _apply_custom_cursors() -> void: