iter8-二轮修改批(用户一轮目检四裁决实装):A 互斥确认弹窗化=ConfirmDialog 通用实底确认框(开新冒险/取消两钮,按钮换面 3s 机制退役)+main 三态接线+锁面入列;B 结算框/冒险终局实底面板化=BattleEndOverlay 石板皮面板(墨字判定行/GP 行/按钮列),金蜡封改面板头部静态徽记(坠落演出退役——落点被面板遮挡),纹章环/掸灰/旗收回锚点移屏心(fx 计数断言面不变);C 结算伤害数字突出=明细带 damage 行值放大 17px 朱红独立色(#d9402a——数字即信息主角);D1 退出游戏提级一级菜单(开始菜单与设置并行,设置面内退出移除);D2 设置开关换 UiKit toggle 按钮形态(全屏:开/关 文字随态)——click 探针三段同步(弹窗双路断言/退出层级断言/开关查找器换 Button)——闸:冒烟 596/0+run_all 15 套+六探针全绿 0err
This commit is contained in:
1 parent
931b7fa8fa
commit
2400dbe49e
9 files changed
+195
-80
No files matched your search
@@ -23,6 +23,9 @@ var _board_rect := Rect2()
|
||||
|
||||
|
||||
func _init() -> void:
|
||||
# 二轮修改批 B(2026-09-29 用户目检裁决):半透明浮层文字不可读 → 实底石板皮面板形态
|
||||
#(与营地/设置/图例同族)。半透明氛围 dim 保留(胜利暖纱/失败暮蓝),信息与按钮全部上板;
|
||||
# 金蜡封 = 面板头部静态徽记(原全屏坠落演出退役——落点被面板遮挡)。
|
||||
_dim = ColorRect.new()
|
||||
_dim.color = Color(COL_WARM, 0.0)
|
||||
_dim.set_anchors_preset(Control.PRESET_FULL_RECT)
|
||||
@@ -30,33 +33,41 @@ func _init() -> void:
|
||||
var center := CenterContainer.new()
|
||||
center.set_anchors_preset(Control.PRESET_FULL_RECT)
|
||||
_dim.add_child(center)
|
||||
var panel := PanelContainer.new()
|
||||
panel.add_theme_stylebox_override("panel", UiKit.panel_skinned(Vector4(16, 14, 16, 14)))
|
||||
center.add_child(panel)
|
||||
var box := VBoxContainer.new()
|
||||
box.custom_minimum_size = Vector2(520, 0)
|
||||
box.add_theme_constant_override("separation", 12)
|
||||
center.add_child(box)
|
||||
_verdict = UiKit.label("", 26, true)
|
||||
_verdict.add_theme_color_override("font_color", COL_WARM)
|
||||
panel.add_child(box)
|
||||
var header := HBoxContainer.new()
|
||||
header.add_theme_constant_override("separation", 12)
|
||||
header.alignment = BoxContainer.ALIGNMENT_CENTER
|
||||
box.add_child(header)
|
||||
_seal = Panel.new()
|
||||
_seal.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
var sb := UiKit.panel_flat(COL_GOLD, UiKit.GOLD_DEEP, 200, 4)
|
||||
_seal.add_theme_stylebox_override("panel", sb)
|
||||
_seal.custom_minimum_size = Vector2(34, 34)
|
||||
_seal.size_flags_vertical = Control.SIZE_SHRINK_CENTER
|
||||
header.add_child(_seal)
|
||||
_verdict = UiKit.label("", 24, true)
|
||||
_verdict.add_theme_color_override("font_color", UiKit.INK_TITLE)
|
||||
_verdict.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
box.add_child(_verdict)
|
||||
_verdict.size_flags_vertical = Control.SIZE_SHRINK_CENTER
|
||||
header.add_child(_verdict)
|
||||
_gp_line = UiKit.label("", 16, true)
|
||||
_gp_line.add_theme_color_override("font_color", UiKit.GOLD)
|
||||
_gp_line.add_theme_color_override("font_color", UiKit.INK_LABEL)
|
||||
_gp_line.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
_gp_line.visible = false
|
||||
box.add_child(_gp_line)
|
||||
box.add_child(HSeparator.new())
|
||||
_review_btn = UiKit.button("明细回看")
|
||||
_review_btn.pressed.connect(_emit_review_pressed)
|
||||
box.add_child(_review_btn)
|
||||
_btn = UiKit.button("继续")
|
||||
_btn.pressed.connect(_emit_continue_pressed)
|
||||
box.add_child(_btn)
|
||||
# 金蜡封占位(胜利):圆形色块落于扫雷图区中央——位置由 set_board_rect 注入
|
||||
_seal = Panel.new()
|
||||
_seal.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
var sb := UiKit.panel_flat(COL_GOLD, UiKit.GOLD_DEEP, 200, 4)
|
||||
_seal.add_theme_stylebox_override("panel", sb)
|
||||
_seal.size = Vector2(72, 72)
|
||||
_seal.visible = false
|
||||
_seal.top_level = true
|
||||
add_child(_seal)
|
||||
visible = false
|
||||
|
||||
|
||||
@@ -66,14 +77,13 @@ func _init() -> void:
|
||||
func open_victory(verdict_line: String, continue_label: String, board_rect: Rect2, gp_summary: String = "") -> void:
|
||||
_dim.color = Color(COL_WARM, 0.28)
|
||||
_verdict.text = verdict_line
|
||||
_verdict.add_theme_color_override("font_color", UiKit.INK_ON_GOLD)
|
||||
_seal.visible = true # 胜利徽记(面板头部静态)
|
||||
_gp_line.text = gp_summary
|
||||
_gp_line.visible = gp_summary != ""
|
||||
_btn.text = continue_label
|
||||
_board_rect = board_rect
|
||||
visible = true
|
||||
_play_seal_fall()
|
||||
_play_crest_assemble() # 碎砖拼纹章(§2.4——样张 v2 冻结批 T3 终稿)
|
||||
_play_crest_assemble() # 碎砖拼纹章(§2.4——样张 v2 冻结批 T3 终稿;绕面板屏心环收)
|
||||
_play_flag_recall(0) # 胜利不放旗收回
|
||||
|
||||
|
||||
@@ -81,11 +91,10 @@ func open_defeat(verdict_line: String, continue_label: String, board_rect: Rect2
|
||||
# 明度不变的暮蓝色相氛围(全屏唯一暮蓝档——§2.5 最静一拍)
|
||||
_dim.color = Color(COL_DUSK, 0.45)
|
||||
_verdict.text = verdict_line
|
||||
_verdict.add_theme_color_override("font_color", COL_WARM)
|
||||
_gp_line.visible = false # GP 总量+增量归胜利总结结算(OQ14)——失败侧不呈现
|
||||
_board_rect = board_rect
|
||||
visible = true
|
||||
_seal.visible = false
|
||||
_seal.visible = false # 失败无徽记(暮蓝氛围)
|
||||
_play_dust_sadle() # 坐砖掸灰(§2.5——终稿)
|
||||
_play_flag_recall(8)
|
||||
|
||||
@@ -104,16 +113,8 @@ func verdict_text() -> String:
|
||||
return _verdict.text
|
||||
|
||||
|
||||
# 金蜡封自上落下弹跳定格于棋盘中央(§2.4 克制不狂欢——占位级)
|
||||
func _play_seal_fall() -> void:
|
||||
var target := _board_rect.get_center() - _seal.size * 0.5
|
||||
if _board_rect.size == Vector2.ZERO:
|
||||
target = get_viewport_rect().size * 0.5 - _seal.size * 0.5
|
||||
_seal.position = Vector2(target.x, -100.0)
|
||||
_seal.visible = true
|
||||
var tw := _seal.create_tween()
|
||||
tw.tween_property(_seal, "position:y", target.y - 26.0, UiKit.motion(0.42)).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_IN)
|
||||
tw.tween_property(_seal, "position:y", target.y, UiKit.motion(0.22)).set_trans(Tween.TRANS_BOUNCE).set_ease(Tween.EASE_OUT)
|
||||
func _fx_center() -> Vector2:
|
||||
return get_viewport_rect().size * 0.5
|
||||
|
||||
|
||||
# 旗化光点收回(失败——插过的旗逐面化光点收回占位,§2.5)
|
||||
@@ -147,7 +148,7 @@ var _fx_flag_dots := 0
|
||||
func _play_crest_assemble() -> void:
|
||||
_clear_crest_bricks()
|
||||
_fx_crest_shards = 10
|
||||
var c := _board_rect.get_center() if _board_rect.size != Vector2.ZERO else get_viewport_rect().size * 0.5
|
||||
var c := _fx_center()
|
||||
for i in 10:
|
||||
var brick := ColorRect.new()
|
||||
brick.color = UiKit.BRICK if i % 2 == 0 else UiKit.FLOOR # 碎砖=砖面族色(掩尘/裸土——图底同源)
|
||||
@@ -167,7 +168,7 @@ func _play_crest_assemble() -> void:
|
||||
# 坐砖掸灰(失败 §2.5——暖灰尘絮自棋盘中带缓缓飘落,最静一拍的运动承载)
|
||||
func _play_dust_sadle() -> void:
|
||||
_fx_dust_motes = 8
|
||||
var base := _board_rect.get_center() if _board_rect.size != Vector2.ZERO else get_viewport_rect().size * 0.5
|
||||
var base := _fx_center()
|
||||
for i in 8:
|
||||
var mote := ColorRect.new()
|
||||
mote.color = Color(UiKit.WARM_FAINT, 0.85)
|
||||
|
||||
@@ -192,7 +192,9 @@ func _format_row(row: Dictionary, agg_count := -1) -> String:
|
||||
roll_txt += " · ×%d%%" % int(row.tier)
|
||||
roll_txt += "〕"
|
||||
var kill := " ⚔击杀!" if row.get("killed", false) else ""
|
||||
var body := "%s -%d%s%s%s%s" % [name_, v, roll_txt, tail, kill, suffix]
|
||||
# 二轮修改批 C(2026-09-29 用户目检——「每次结算标出的伤害数字不明显」):
|
||||
# 伤害值放大加色独立于行文(朱红大一号——数字即信息主角,非同字号色温微差)
|
||||
var body := "%s [color=#d9402a][size=17]-%d[/size][/color]%s%s%s%s" % [name_, v, roll_txt, tail, kill, suffix]
|
||||
var body_col := "#e07050" if row.get("killed", false) else ("#9a8a72" if v == 0 else "#e0a050")
|
||||
if bool(row.get("crit", false)):
|
||||
return prefix + _gold_frame(body) # nat 最大面暴击 = 金框高亮行
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-09-29(迭代 8 二轮修改批 A——新冒险互斥确认弹窗化,用户目检裁决:
|
||||
# 按钮文字换面 → 实底确认弹窗「开新冒险 + 取消」)
|
||||
# 通用确认弹窗(实底石板皮面板,与营地/设置/图例同族视觉):open(text, confirm_label, cancel_label)
|
||||
# 双钮外发 confirmed/cancelled——语义装配归调用方,本类零业务触碰(纯视图边界规范 1.3)。
|
||||
class_name ConfirmDialog
|
||||
extends Control
|
||||
|
||||
signal confirmed
|
||||
signal cancelled
|
||||
|
||||
var _text: Label
|
||||
var _confirm_btn: Button
|
||||
var _cancel_btn: Button
|
||||
|
||||
|
||||
func _init() -> void:
|
||||
var dim := ColorRect.new()
|
||||
dim.color = Color(UiKit.DIM, 0.55)
|
||||
dim.set_anchors_preset(Control.PRESET_FULL_RECT)
|
||||
add_child(dim)
|
||||
var center := CenterContainer.new()
|
||||
center.set_anchors_preset(Control.PRESET_FULL_RECT)
|
||||
dim.add_child(center)
|
||||
var panel := PanelContainer.new()
|
||||
panel.add_theme_stylebox_override("panel", UiKit.panel_skinned(Vector4(14, 12, 14, 12)))
|
||||
center.add_child(panel)
|
||||
var box := VBoxContainer.new()
|
||||
box.custom_minimum_size = Vector2(460, 0)
|
||||
box.add_theme_constant_override("separation", 12)
|
||||
panel.add_child(box)
|
||||
_text = UiKit.label("", 16, false)
|
||||
_text.add_theme_color_override("font_color", UiKit.INK_TITLE)
|
||||
_text.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
||||
_text.custom_minimum_size = Vector2(430, 0)
|
||||
box.add_child(_text)
|
||||
box.add_child(HSeparator.new())
|
||||
var btn_row := HBoxContainer.new()
|
||||
btn_row.add_theme_constant_override("separation", 12)
|
||||
btn_row.alignment = BoxContainer.ALIGNMENT_CENTER
|
||||
box.add_child(btn_row)
|
||||
_cancel_btn = UiKit.button("取消")
|
||||
_cancel_btn.pressed.connect(_emit_cancelled)
|
||||
btn_row.add_child(_cancel_btn)
|
||||
_confirm_btn = UiKit.button("确认")
|
||||
_confirm_btn.pressed.connect(_emit_confirmed)
|
||||
btn_row.add_child(_confirm_btn)
|
||||
visible = false
|
||||
|
||||
|
||||
func open(text: String, confirm_label: String, cancel_label: String = "取消") -> void:
|
||||
_text.text = text
|
||||
_confirm_btn.text = confirm_label
|
||||
_cancel_btn.text = cancel_label
|
||||
visible = true
|
||||
|
||||
|
||||
func close() -> void:
|
||||
visible = false
|
||||
|
||||
|
||||
func is_open() -> bool:
|
||||
return visible
|
||||
|
||||
|
||||
func _emit_confirmed() -> void:
|
||||
confirmed.emit()
|
||||
|
||||
|
||||
func _emit_cancelled() -> void:
|
||||
cancelled.emit()
|
||||
@@ -0,0 +1 @@
|
||||
uid://dhe557khvoq3y
|
||||
@@ -1,6 +1,6 @@
|
||||
# VERTICAL SLICE - NOT FOR PRODUCTION
|
||||
# Date: 2026-09-29(迭代 8 卡④ 最小设置面)
|
||||
# 设置覆盖层(纯视图边界规范 1.3 同款):音量滑杆/全屏/减动效三件+退出游戏+返回。
|
||||
# 设置覆盖层(纯视图边界规范 1.3 同款):音量滑杆/全屏/减动效三件+返回(退出游戏已提级开始菜单)。
|
||||
# 生效与持久化全经 SettingsStore 单点(实时应用+即改即存);本类零核心触碰。
|
||||
# 减动效转正承载(测试调整板旧开关退役——设置面唯一入口,卡④ AC③)。
|
||||
# 探针接缝:retarget(store) = 隔离存档换注口(同 camp 换注先例);控件引用公有只读供断言。
|
||||
@@ -12,8 +12,8 @@ signal closed
|
||||
var _store
|
||||
var _volume: HSlider
|
||||
var _volume_val: Label
|
||||
var _fs_btn: CheckButton
|
||||
var _motion_btn: CheckButton
|
||||
var _fs_btn: Button
|
||||
var _motion_btn: Button
|
||||
|
||||
|
||||
func _init(store) -> void:
|
||||
@@ -65,22 +65,21 @@ func _build() -> void:
|
||||
_volume_val.custom_minimum_size = Vector2(60, 0)
|
||||
vol_row.add_child(_volume_val)
|
||||
|
||||
# 全屏(art-bible 1920 档缩放策略冲突条目挂起注记——现行视口恒等拉伸,全屏切换即窗口模式切换)
|
||||
_fs_btn = CheckButton.new()
|
||||
_fs_btn.text = "全屏"
|
||||
# 开关形态(二轮修改批 D2 2026-09-29 用户目检——原生 CheckButton 暗底不显眼,
|
||||
# 换 UiKit 按钮形态 toggle:文字「全屏:开/关」随态换面)
|
||||
_fs_btn = UiKit.button("全屏:关")
|
||||
_fs_btn.toggle_mode = true
|
||||
_fs_btn.toggled.connect(_on_fullscreen_toggled)
|
||||
box.add_child(_fs_btn)
|
||||
|
||||
# 减动效(battle.md §Transitions 承诺转正——时长减半,结算逐行兑现=信息载体不整体跳过)
|
||||
_motion_btn = CheckButton.new()
|
||||
_motion_btn.text = "减动效(动画时长减半——运动敏感/演示用)"
|
||||
_motion_btn = UiKit.button("减动效:关(动画时长减半——运动敏感/演示用)")
|
||||
_motion_btn.toggle_mode = true
|
||||
_motion_btn.toggled.connect(_on_motion_toggled)
|
||||
box.add_child(_motion_btn)
|
||||
|
||||
box.add_child(HSeparator.new())
|
||||
var quit_btn := UiKit.button("退出游戏")
|
||||
quit_btn.pressed.connect(_on_quit_pressed)
|
||||
box.add_child(quit_btn)
|
||||
# 退出游戏已提级开始菜单(D1——设置面不再承载,用户裁决「退出只在一级菜单出现」)
|
||||
var close_btn := UiKit.button("返回")
|
||||
close_btn.pressed.connect(_emit_closed)
|
||||
box.add_child(close_btn)
|
||||
@@ -90,7 +89,9 @@ func _sync() -> void:
|
||||
_volume.set_value_no_signal(roundf(_store.volume_linear * 100.0))
|
||||
_volume_val.text = "%d%%" % roundi(_store.volume_linear * 100.0)
|
||||
_fs_btn.set_pressed_no_signal(_store.fullscreen)
|
||||
_fs_btn.text = "全屏:%s" % ("开" if _store.fullscreen else "关")
|
||||
_motion_btn.set_pressed_no_signal(_store.reduced_motion)
|
||||
_motion_btn.text = "减动效:%s(动画时长减半——运动敏感/演示用)" % ("开" if _store.reduced_motion else "关")
|
||||
|
||||
|
||||
func _on_volume_changed(v: float) -> void:
|
||||
@@ -112,10 +113,5 @@ func _on_motion_toggled(on: bool) -> void:
|
||||
_store.save_settings()
|
||||
|
||||
|
||||
func _on_quit_pressed() -> void:
|
||||
_store.save_settings()
|
||||
get_tree().quit()
|
||||
|
||||
|
||||
func _emit_closed() -> void:
|
||||
closed.emit()
|
||||
Reference in new issue
Block a user