iter9-T6: 卡④ B 区舞台(圣经 §6.1 正面目标批 B4)——世界底层暗背景 Color8(62,52,42)+PANEL_BORDER 描边(替换浅石板皮)+顶光柱氛围层(四柱@1280 基准 110/900/1055/1210,暖光 60 段渐窄渐隐,bg<光柱<世界层序)+站桩石板地台落影(椭圆落影 α0.27+板身/描边/顶缘受光线=方向稿取色 150,130,100/90,76,58/196,172,132)+暗底双色墨制随迁(轮次标签/演出区文案/敌名行/轻甲图标切暖白族);轻闸=冒烟 596/0+ui_input 十四断言+fx 全链+click 问题=0+layout 退出 0(中途 SCRIPT ERROR=for 循环 Variant 推断 typed 修复——探针挂死 20 分钟教训:解析错误致 probe 等 never signal)

This commit is contained in:
DKChan committed 2026-09-30 06:03:36 +08:00
1 parent f0a77a4a8c
commit 1ecad0b580
2 files changed
+47 -9

No files matched your search

+30 -4
View File
@@ -41,15 +41,25 @@ var world: Node2D # StageWorld(preload 脚本实例——Node2D 世
func _init(db_ref) -> void:
custom_minimum_size = Vector2(0, 252)
# 面板底(PanelContainer 面板样式等价平移——Control 壳不自绘 stylebox,Panel 子面承载;
# 石板皮 = 样张 v2 冻结批 T2——缺位回退 PANEL_DATA flat,渲染观感不变)
# 面板底(圣经 v3.5 批 B4 2026-09-30——§6.1 舞台正面目标落码:B 区=地窟看台,世界底层暗背景
# Color8(62,52,42)=方向稿 render_battle_screen 取值——替换原浅石板皮〔实测 L0.027 旧深底与
# 上半米黄割裂的 opposite 端——v3.5 定暖暗中档〕;描边=PANEL_BORDER 同方向稿)
var bg := Panel.new()
var sb := UiKit.panel_skinned(Vector4(6, 4, 6, 4), Color(0.956, 0.952, 0.945)) # tint=PANEL_STAGE 对 PANEL_DATA 比值
var sb := UiKit.panel_flat(Color8(62, 52, 42), UiKit.PANEL_BORDER, 0, 1)
bg.add_theme_stylebox_override("panel", sb)
bg.set_anchors_preset(Control.PRESET_FULL_RECT)
bg.mouse_filter = Control.MOUSE_FILTER_IGNORE
add_child(bg)
# 顶光柱氛围层(§6.1 光源氛围——方向稿四柱:x 基准 110/900/1055/1210@1280,暖光 (255,236,200)
# 自顶向下 60 段渐宽窄渐隐〔顶 α26→0〕;绘制在暗底之上/世界站桩之下——层序=bg < 光柱 < 世界)
var beams := Control.new()
beams.set_anchors_preset(Control.PRESET_FULL_RECT)
beams.mouse_filter = Control.MOUSE_FILTER_IGNORE
beams.draw.connect(_draw_light_beams.bind(beams))
beams.resized.connect(beams.queue_redraw)
add_child(beams)
# ── Node2D 舞台半区(ADR-0006 Phase B 同构;stretch 1:1 无缩放系数——C2/C5)──
_svp_container = SubViewportContainer.new()
_svp_container.stretch = true # 容器尺寸 = 视口逻辑分辨率,恒 1:1
@@ -78,6 +88,7 @@ func _init(db_ref) -> void:
round_label = UiKit.label("第 — 轮 · —", 15, true)
round_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
round_label.add_theme_color_override("font_color", UiKit.WARM) # 暗底双色墨制(v3.5 批 B4——原深墨对暗底不可读)
vb.add_child(round_label)
_row = HBoxContainer.new()
@@ -93,7 +104,7 @@ func _init(db_ref) -> void:
center_col.alignment = BoxContainer.ALIGNMENT_CENTER
center.add_child(center_col)
stage_center = UiKit.label("兑现演出区\n(结算期:光带 → 弹道 → 受击)", 13, false)
stage_center.add_theme_color_override("font_color", UiKit.STONE_FAINT)
stage_center.add_theme_color_override("font_color", UiKit.WARM_SOFT) # 暗底双色墨制(原 STONE_FAINT 对暗底不可读)
stage_center.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
center_col.add_child(stage_center)
_row.add_child(center)
@@ -123,6 +134,21 @@ func _init(db_ref) -> void:
hero_standee.slot_row = _make_slot_companion(_companion_layer)
# 顶光柱绘制(§6.1——方向稿同构:每柱 60 段叠层矩形,宽度 ±46px 随 i//3 收窄、高度 40+3i 向下延伸、
# α 26→0 渐隐;同柱相邻段重叠区 α 自然叠加=顶部亮下部渐隐的光井观感;位置随层宽等比例)
func _draw_light_beams(c: Control) -> void:
var w := c.size.x
if w <= 0.0:
return
for bx: float in [110.0, 900.0, 1055.0, 1210.0]:
var x0: float = bx / 1280.0 * w
for i in 60:
var a := int(26.0 * (1.0 - float(i) / 60.0))
var half := 46.0 - float(i) / 3.0
c.draw_rect(Rect2(x0 - half, 0.0, half * 2.0, 40.0 + float(i) * 3.0),
Color8(255, 236, 200, a), true)
func _make_slot_companion(parent: Control) -> StatusSlotRow:
# 状态效果唯一展示面(2026-09-26 C 区精简批迁入站桩)——compact 档伴随件,tooltip 全明细
var comp := StatusSlotRow.new()
+17 -5
View File
@@ -408,9 +408,21 @@ func _portrait_rect() -> Rect2:
func _draw() -> void:
var f := _efont()
# 底座(旧 panel_flat(STONE.darkened(0.35), STONE.darkened(0.1), 6, 1) 等价——BOTTOM_WIDE 26/-26, -18/-8)
var plat := UiKit.panel_flat(UiKit.STONE.darkened(0.35), UiKit.STONE.darkened(0.1), 6, 1)
plat.draw(get_canvas_item(), Rect2(26, box.y - 18.0, box.x - 52.0, 10.0))
# 椭圆落影(圣经 v3.5 批 B4 2026-09-30——§6.1 地台落影压脚:方向稿椭圆 (0,0,0,70),压在地台
# 上缘周围;24 段多边形近似椭圆,中心=台面上方 6px、横半径=台宽一半)
var sh_center := Vector2(box.x * 0.5, box.y - 24.0)
var sh_rx := (box.x - 36.0) * 0.5
var sh_ry := 9.0
var pts := PackedVector2Array()
for i in 24:
var ang := TAU * float(i) / 24.0
pts.append(sh_center + Vector2(cos(ang) * sh_rx, sin(ang) * sh_ry))
draw_colored_polygon(pts, Color(0, 0, 0, 0.27))
# 石板地台(v3.5——方向稿取色:板身 (150,130,100)/描边 (90,76,58)/顶缘受光线 2px (196,172,132);
# 几何沿用现行底座位〔margin 26/高 10→方向稿 18/12——按方向稿对齐〕)
draw_rect(Rect2(18.0, box.y - 18.0, box.x - 36.0, 12.0), Color8(150, 130, 100), true)
draw_rect(Rect2(18.0, box.y - 18.0, box.x - 36.0, 12.0), Color8(90, 76, 58), false, 1.0)
draw_rect(Rect2(18.0, box.y - 18.0, box.x - 36.0, 2.0), Color8(196, 172, 132), true)
# 血条(直角递减):敌附顺位徽标(GOLD_DEEP ①②③)——旧 top VBox 几何等价(左 8 / 右 -8)
var bar_x := 8.0
@@ -458,7 +470,7 @@ func _draw() -> void:
# 底座下 护甲类型图标+名字 常驻行(敌 only——2026-09-26 用户终裁:AC 数值不展示,类型图标化)
if _kind == "enemy":
var armor_txt := String(ARMOR_ICONS.get(_armor, "◇"))
var col: Color = UiKit.STONE # 轻甲 = 灰石(中性轻薄)
var col: Color = UiKit.WARM_FAINT # 轻甲 = 暖白弱化(v3.5 暗底双色墨制——原灰石对暗底不可读)
match _armor:
"ward":
col = UiKit.HERO_BLUE # 魔法护甲 = 小人蓝
@@ -470,4 +482,4 @@ func _draw() -> void:
var baseline := Vector2((box.x - total_w) * 0.5, box.y - 1.0)
f.draw_string(get_canvas_item(), baseline, armor_txt, HORIZONTAL_ALIGNMENT_LEFT, -1, 12, col)
f.draw_string(get_canvas_item(), baseline + Vector2(armor_w + 3.0, 0), _display_name,
HORIZONTAL_ALIGNMENT_LEFT, -1, 12, UiKit.INK_TITLE)
HORIZONTAL_ALIGNMENT_LEFT, -1, 12, UiKit.WARM) # v3.5 暗底双色墨制(原 INK_TITLE 深墨对暗底不可读)