diff --git a/game/presentation/views/battle_stage_view.gd b/game/presentation/views/battle_stage_view.gd index 3fec96ec..c2111474 100644 --- a/game/presentation/views/battle_stage_view.gd +++ b/game/presentation/views/battle_stage_view.gd @@ -248,7 +248,8 @@ func set_enemies(cards_data: Array) -> void: world.add_child(body) body.slot_row = _make_slot_companion(enemy_box) body.set_data(d) - # 敌种立绘接线(仅重建拍装载一次;flip=false——敌像素材基准朝右,翻转义务归素材批) + # 敌种立绘接线(仅重建拍装载一次;flip=false——八敌像素源核证朝左/正面(迭代 6 T1), + # 呈现即朝主角无误;反向朝向源换代时翻转义务归素材批) body.set_portrait_texture(_enemy_portrait_tex(String(d.get("enemy_id", ""))), false) _cards.append(body) _sync_layout.call_deferred() diff --git a/game/presentation/views/standee_body.gd b/game/presentation/views/standee_body.gd index a661e301..7412cdb0 100644 --- a/game/presentation/views/standee_body.gd +++ b/game/presentation/views/standee_body.gd @@ -311,19 +311,18 @@ func _refresh_portrait_glyph() -> void: func _portrait_glyph() -> String: + # 字形回退已退役为纯缺位兜底(迭代 6 T2——八敌真图落位;旧三档体量字形 ▂/▆/█ 随退役, + # 相对体量语义由 48px 档统一比例承载)。缺位态:主角「人」/死亡「✕」/其余「敌」。 if _kind == "hero": return "人" if _dead: return "✕" - match _enemy_id: - "goblin": - return "▂" # 小体量墩形 - "bugbear": - return "▆" # 垂直延伸体量 - "ogre_chief": - return "█" # 最大体量 - _: - return "敌" + return "敌" + + +# 立绘落位探针出口(迭代 6 T2——站桩纹理非空断言面;缺位回退链保持的对照面) +func portrait_probe() -> Dictionary: + return {"has_tex": _portrait_sprite != null and _portrait_sprite.texture != null} func _portrait_color() -> Color: diff --git a/game/smoke/ui_probe.gd b/game/smoke/ui_probe.gd index 912de2d9..da82e2cb 100644 --- a/game/smoke/ui_probe.gd +++ b/game/smoke/ui_probe.gd @@ -133,8 +133,13 @@ func _ready() -> void: standee.set_pending("basic", "") if bool(standee.intent_probe().visible): problems.append("普攻应零表示(意图指示应隐藏)") + # 站桩纹理非空断言(迭代 6 T2——八敌真图落位;缺位回退链保持的对照面) + if not bool(standee.portrait_probe().get("has_tex", false)): + problems.append("敌立绘纹理未落位(素材管线 48px 档——迭代 6 T2;缺位回退链不应在此态触发)") if main.stage.hero_standee == null or not main.stage.hero_standee.has_world_hp_bar: problems.append("B 区主角站桩缺失(世界血条面缺失)") + elif not bool(main.stage.hero_standee.portrait_probe().get("has_tex", false)): + problems.append("主角立绘纹理未落位(48px 档——迭代 6 T2/T3)") # ---- BUG-0001 回归(tooltip 入树后 set_effects 槽位不错位——结算软锁修复沉淀)---- var slots_row = main.stage.hero_standee.slot_row # BUG-0001 回归随组件迁入站桩(tooltip/槽位错位同源) var probe_eff: Array = [{"effect_id": "attack_up", "display_name": "增伤", "layers": 1,