From 56e1ae3b45806a4a4050e664efd7bfc427d5f4c3 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Tue, 6 Oct 2026 07:55:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=88=A4=E5=AE=98=E5=A4=8D=E9=AA=8C?= =?UTF-8?q?=E5=9B=9B=E4=BF=AE=E2=80=94=E2=80=94=E2=91=A0styled=5Fslider=20?= =?UTF-8?q?=E6=A7=BD=E8=BD=A8=E5=AE=9E=E9=AB=98=EF=BC=88HSlider=20?= =?UTF-8?q?=E6=A7=BD=3D=E6=8C=89=20stylebox=20min=20=E9=AB=98=E7=BB=98?= =?UTF-8?q?=E5=88=B6=EF=BC=8C=E9=9B=B6=20margin=3D0-2px=20=E4=B8=8D?= =?UTF-8?q?=E5=8F=AF=E8=A7=81=E5=AE=9E=E6=B5=8B=EF=BC=9B12px=20=E5=AE=9E?= =?UTF-8?q?=E9=AB=98+=E6=B7=B1=E6=A3=95=E5=A1=AB=E5=85=85+=E6=8F=8F?= =?UTF-8?q?=E8=BE=B9=EF=BC=89=E2=91=A1=E4=B8=89=E9=80=89=E4=B8=80=E5=8D=A1?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E8=84=9A=E6=B3=A8=E8=A1=8C=EF=BC=88demo=20.s?= =?UTF-8?q?rc=20=E5=90=8C=E4=BD=8D=E4=BA=94=E6=97=8F=E8=AF=8D=E2=80=94?= =?UTF-8?q?=E2=80=94=E5=8D=A1=E4=B8=8B=E5=8D=8A=E7=A9=BA=E5=BA=95=E4=BF=AE?= =?UTF-8?q?=EF=BC=89=E2=91=A2=E5=9C=B0=E5=9B=BE=E9=A1=B6=E6=A0=8F=E5=AF=B9?= =?UTF-8?q?=E9=BD=90=20demo=EF=BC=88=E5=85=B3=E5=8D=A1=E5=90=8D=E5=85=A5?= =?UTF-8?q?=E6=A1=86=E6=9D=BF+GP=20=E7=83=9B=E5=85=89=E8=83=B6=E5=9B=8A+?= =?UTF-8?q?=E5=B7=A6=E5=8F=B3=E4=B8=A4=E6=9E=81=EF=BC=8C=E8=A3=B8=E6=96=87?= =?UTF-8?q?=E6=9C=AC/=E5=B1=85=E4=B8=AD=E6=82=AC=E7=BD=AE=E9=80=80?= =?UTF-8?q?=E5=BD=B9=EF=BC=89=E2=91=A3=E5=AE=A1=E8=AE=A1=E6=8E=A2=E9=92=88?= =?UTF-8?q?=E6=A0=87=E9=A2=98=E5=B1=8F=E7=A7=8D=E5=AD=90=E6=96=AD=E7=82=B9?= =?UTF-8?q?=EF=BC=88=E6=9C=89=E6=A1=A3=E6=80=81=3D=E7=BB=A7=E7=BB=AD?= =?UTF-8?q?=E4=B8=8A=E5=B1=80=E4=B8=BB=E9=92=AE=E4=BA=AE=E5=87=BA=E5=AF=B9?= =?UTF-8?q?=E9=BD=90=E2=91=A4=EF=BC=9B=E5=BC=80=E5=A7=8B=E5=86=92=E9=99=A9?= =?UTF-8?q?=E5=89=8D=E6=94=B6=E7=A7=8D=E5=AD=90=E9=81=BF=E6=B8=85=E6=A1=A3?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E6=96=AD=E6=B5=81=EF=BC=89=E2=80=94=E2=80=94?= =?UTF-8?q?=E5=86=92=E7=83=9F782/0+probe=5Fgate=20--click=E5=85=A8?= =?UTF-8?q?=E7=BB=BF+ui=5Faudit=5Fprobe=20=E9=97=AE=E9=A2=98=3D0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/presentation/views/curio_pick_overlay.gd | 16 ++++++++++++++- game/presentation/views/level_map_screen.gd | 20 ++++++++++++++----- game/presentation/views/ui_kit.gd | 10 +++++++--- game/smoke/ui_audit_probe.gd | 15 +++++++++++++- 4 files changed, 51 insertions(+), 10 deletions(-) diff --git a/game/presentation/views/curio_pick_overlay.gd b/game/presentation/views/curio_pick_overlay.gd index 60a85b86..637c2bb3 100644 --- a/game/presentation/views/curio_pick_overlay.gd +++ b/game/presentation/views/curio_pick_overlay.gd @@ -105,7 +105,8 @@ func open_pick(header: String, cards: Array) -> void: var desc := "\n".join(lines.slice(1)) if lines.size() > 1 else "" var idl := cid.to_lower() var band := UiKit.tg_band(idl) # 类型色带单点(N4c 2026-10-06——TG_* 五族同源判定;aoe/blast 归 TG_AOE) - var card := UiKit.bcard(title, desc, band, _icon_for_id(idl)) + # 类型脚注(T7 判官 checkpoint:demo .bcard .src 底部类型行——实机缺=卡下半空底;词=demo 同款) + var card := UiKit.bcard(title, desc, band, _icon_for_id(idl), "", _type_label(idl)) card.gui_input.connect(func(ev: InputEvent) -> void: if ev is InputEventMouseButton and ev.pressed and ev.button_index == MOUSE_BUTTON_LEFT: _select_card(cid)) @@ -246,3 +247,16 @@ func _icon_for_id(idl: String) -> String: if idl.contains("ap") or idl.contains("action"): return UiKit.TEX_ICON_POUCH return UiKit.TEX_ICON_COINBAG + + +# T7 类型脚注词(demo .bcard .src 同款五族——与 tg_band 同域子串判定,卡底填空对齐) +func _type_label(idl: String) -> String: + if idl.contains("heal"): + return "治疗" + if idl.contains("blast") or idl.contains("magic"): + return "魔法" + if idl.contains("pierce"): + return "穿甲" + if idl.contains("aoe"): + return "群伤" + return "通用增益" diff --git a/game/presentation/views/level_map_screen.gd b/game/presentation/views/level_map_screen.gd index c0b9f0d3..50bf204e 100644 --- a/game/presentation/views/level_map_screen.gd +++ b/game/presentation/views/level_map_screen.gd @@ -87,20 +87,30 @@ func _init() -> void: var box := VBoxContainer.new() box.add_theme_constant_override("separation", 10) center.add_child(box) - # 顶栏语境(spec Layout:左关卡名 / 右 GP 常驻徽章——直角细线数据框) + # 顶栏语境(spec Layout:左关卡名 / 右 GP 常驻徽章——直角细线数据框; + # T5 判官 checkpoint 对齐 demo ④:关卡名入框板(裸文本退役)+GP 徽章=烛光胶囊(同商店金币框)+ + # 左右两极排布(原居中悬置)) var top := HBoxContainer.new() top.add_theme_constant_override("separation", 12) + top.size_flags_horizontal = Control.SIZE_EXPAND_FILL box.add_child(top) + var lvl_plate := PanelContainer.new() + lvl_plate.add_theme_stylebox_override("panel", + UiKit.panel_flat(UiKit.DARK_UPCOMING, UiKit.PANEL_BORDER, 0, 1, Vector4(12, 3, 12, 3))) + top.add_child(lvl_plate) _level_label = UiKit.label("",UiKit.FS_BODY, true, UiKit.WARM) - _level_label.custom_minimum_size.x = 420 - top.add_child(_level_label) + lvl_plate.add_child(_level_label) + var top_sp := Control.new() + top_sp.size_flags_horizontal = Control.SIZE_EXPAND_FILL + top.add_child(top_sp) var gp_box := PanelContainer.new() - gp_box.add_theme_stylebox_override("panel", UiKit.panel_flat(UiKit.DARK_UPCOMING, UiKit.PANEL_BORDER, 0, 1)) + gp_box.add_theme_stylebox_override("panel", + UiKit.panel_flat(UiKit.CANDLE, UiKit.CAMP_HEADER_BAND,UiKit.RADIUS_OBJECT, 1, Vector4(12, 4, 12, 4))) top.add_child(gp_box) var gp_row := HBoxContainer.new() gp_row.add_theme_constant_override("separation", 6) gp_box.add_child(gp_row) - _gp_value = UiKit.label("",UiKit.FS_BODY, true, UiKit.GOLD) + _gp_value = UiKit.label("",UiKit.FS_BODY, true, UiKit.INK_ON_GOLD) gp_row.add_child(_gp_value) _title = UiKit.label(TITLE_FORK,UiKit.FS_SUB, true, UiKit.WARM) _title.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER diff --git a/game/presentation/views/ui_kit.gd b/game/presentation/views/ui_kit.gd index 97c9b652..be6846d1 100644 --- a/game/presentation/views/ui_kit.gd +++ b/game/presentation/views/ui_kit.gd @@ -703,9 +703,13 @@ static func styled_slider(value: float, minv := 0.0, maxv := 100.0) -> HSlider: s.min_value = minv s.max_value = maxv s.value = value - s.custom_minimum_size = Vector2(200, 20) - s.add_theme_stylebox_override("slider", panel_flat(Color8(184, 165, 130), PANEL_BORDER, 0, 1)) - s.add_theme_stylebox_override("grabber_area", panel_flat(Color8(122, 82, 50), Color8(0, 0, 0, 0), 0, 0)) + s.custom_minimum_size = Vector2(200, 24) + # 槽轨/填充实高(2026-10-06 判官实checkpoint:HSlider 槽=按 stylebox min 高绘制——零 margin + # StyleBoxFlat min 高 0-2px=轨道整条不可见;6px 上下 content margin=12px 实高) + s.add_theme_stylebox_override("slider", + panel_flat(Color8(184, 165, 130), PANEL_BORDER, 0, 1, Vector4(0, 6, 0, 6))) + s.add_theme_stylebox_override("grabber_area", + panel_flat(Color8(122, 82, 50), Color8(0, 0, 0, 0), 0, 0, Vector4(0, 6, 0, 6))) return s diff --git a/game/smoke/ui_audit_probe.gd b/game/smoke/ui_audit_probe.gd index 699f55c3..4ed59fb4 100644 --- a/game/smoke/ui_audit_probe.gd +++ b/game/smoke/ui_audit_probe.gd @@ -29,8 +29,17 @@ func _ready() -> void: await get_tree().process_frame ProbeUiUtil.isolate_save(main, "smoke_ui_audit", true, true, false) await get_tree().process_frame + # 断点种子(2026-10-06 判官 checkpoint——demo 标题屏=有档态「继续上局」主钮亮出;无种子= + # 续玩钮隐藏,主操作语义对齐⑤无从呈现。最小合法断点快照;后续「开始冒险」流程自然覆盖) + main.save_manager.set_breakpoint({ + "master_seed": 42, "rng_counter": 0, "hero_hp": 20, "gp": 24, "keystone": 4, + "level_index": 1, "bonus": {}, "shop_purchased": {}, "relics": [], + "bonus_aux_carry": [], "keystone_drops": [], "bonus_taken": {}, + }) + main._refresh_resume_button() + await get_tree().process_frame - # 1 标题屏(启动态) + # 1 标题屏(启动态=有档态) await _snap("1_start") # 2 调试浮窗(P3 仅开始菜单可开——趁 _level_active=false 先截) main._show_debug_overlay() @@ -55,6 +64,10 @@ func _ready() -> void: close_btn.pressed.emit() await _settle() # 5 关卡地图(开始冒险→停点出图) + # 收种子断点(有断点时「开始冒险」=清档确认互斥弹窗——不收则断流,5_battle 截不上) + main.save_manager.clear_breakpoint() + main._refresh_resume_button() + await get_tree().process_frame var lvbtn: Button = ProbeUiUtil.find_button(main._start_overlay, "开始冒险", "contains") if lvbtn != null: lvbtn.pressed.emit()