From 1ecad0b5807ad38c2ded0d2cf5671681e12a6470 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Wed, 30 Sep 2026 06:03:36 +0800 Subject: [PATCH] =?UTF-8?q?iter9-T6:=20=E5=8D=A1=E2=91=A3=20B=20=E5=8C=BA?= =?UTF-8?q?=E8=88=9E=E5=8F=B0=EF=BC=88=E5=9C=A3=E7=BB=8F=20=C2=A76.1=20?= =?UTF-8?q?=E6=AD=A3=E9=9D=A2=E7=9B=AE=E6=A0=87=E6=89=B9=20B4=EF=BC=89?= =?UTF-8?q?=E2=80=94=E2=80=94=E4=B8=96=E7=95=8C=E5=BA=95=E5=B1=82=E6=9A=97?= =?UTF-8?q?=E8=83=8C=E6=99=AF=20Color8(62,52,42)+PANEL=5FBORDER=20?= =?UTF-8?q?=E6=8F=8F=E8=BE=B9=EF=BC=88=E6=9B=BF=E6=8D=A2=E6=B5=85=E7=9F=B3?= =?UTF-8?q?=E6=9D=BF=E7=9A=AE=EF=BC=89+=E9=A1=B6=E5=85=89=E6=9F=B1?= =?UTF-8?q?=E6=B0=9B=E5=9B=B4=E5=B1=82=EF=BC=88=E5=9B=9B=E6=9F=B1@1280=20?= =?UTF-8?q?=E5=9F=BA=E5=87=86=20110/900/1055/1210=EF=BC=8C=E6=9A=96?= =?UTF-8?q?=E5=85=89=2060=20=E6=AE=B5=E6=B8=90=E7=AA=84=E6=B8=90=E9=9A=90?= =?UTF-8?q?=EF=BC=8Cbg<=E5=85=89=E6=9F=B1<=E4=B8=96=E7=95=8C=E5=B1=82?= =?UTF-8?q?=E5=BA=8F=EF=BC=89+=E7=AB=99=E6=A1=A9=E7=9F=B3=E6=9D=BF?= =?UTF-8?q?=E5=9C=B0=E5=8F=B0=E8=90=BD=E5=BD=B1=EF=BC=88=E6=A4=AD=E5=9C=86?= =?UTF-8?q?=E8=90=BD=E5=BD=B1=20=CE=B10.27+=E6=9D=BF=E8=BA=AB/=E6=8F=8F?= =?UTF-8?q?=E8=BE=B9/=E9=A1=B6=E7=BC=98=E5=8F=97=E5=85=89=E7=BA=BF=3D?= =?UTF-8?q?=E6=96=B9=E5=90=91=E7=A8=BF=E5=8F=96=E8=89=B2=20150,130,100/90,?= =?UTF-8?q?76,58/196,172,132=EF=BC=89+=E6=9A=97=E5=BA=95=E5=8F=8C=E8=89=B2?= =?UTF-8?q?=E5=A2=A8=E5=88=B6=E9=9A=8F=E8=BF=81=EF=BC=88=E8=BD=AE=E6=AC=A1?= =?UTF-8?q?=E6=A0=87=E7=AD=BE/=E6=BC=94=E5=87=BA=E5=8C=BA=E6=96=87?= =?UTF-8?q?=E6=A1=88/=E6=95=8C=E5=90=8D=E8=A1=8C/=E8=BD=BB=E7=94=B2?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=E5=88=87=E6=9A=96=E7=99=BD=E6=97=8F=EF=BC=89?= =?UTF-8?q?=EF=BC=9B=E8=BD=BB=E9=97=B8=3D=E5=86=92=E7=83=9F=20596/0+ui=5Fi?= =?UTF-8?q?nput=20=E5=8D=81=E5=9B=9B=E6=96=AD=E8=A8=80+fx=20=E5=85=A8?= =?UTF-8?q?=E9=93=BE+click=20=E9=97=AE=E9=A2=98=3D0+layout=20=E9=80=80?= =?UTF-8?q?=E5=87=BA=200=EF=BC=88=E4=B8=AD=E9=80=94=20SCRIPT=20ERROR=3Dfor?= =?UTF-8?q?=20=E5=BE=AA=E7=8E=AF=20Variant=20=E6=8E=A8=E6=96=AD=20typed=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E2=80=94=E2=80=94=E6=8E=A2=E9=92=88=E6=8C=82?= =?UTF-8?q?=E6=AD=BB=2020=20=E5=88=86=E9=92=9F=E6=95=99=E8=AE=AD=EF=BC=9A?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E9=94=99=E8=AF=AF=E8=87=B4=20probe=20?= =?UTF-8?q?=E7=AD=89=20never=20signal=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/presentation/views/battle_stage_view.gd | 34 +++++++++++++++++--- game/presentation/views/standee_body.gd | 22 ++++++++++--- 2 files changed, 47 insertions(+), 9 deletions(-) diff --git a/game/presentation/views/battle_stage_view.gd b/game/presentation/views/battle_stage_view.gd index e1108690..daf77336 100644 --- a/game/presentation/views/battle_stage_view.gd +++ b/game/presentation/views/battle_stage_view.gd @@ -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() diff --git a/game/presentation/views/standee_body.gd b/game/presentation/views/standee_body.gd index 20643d3a..e43c2ee4 100644 --- a/game/presentation/views/standee_body.gd +++ b/game/presentation/views/standee_body.gd @@ -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 深墨对暗底不可读)