Files
Sprout-Farm/GUI/AcceptDialog.gd
2025-06-28 14:39:37 +08:00

88 lines
2.5 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
extends AcceptDialog
@export var dialog_min_size := Vector2(400, 200)
@export var ok_text := "确认"
@export var cancel_text := "取消"
func _ready() -> void:
# 设置弹窗最小尺寸
self.set("rect_min_size", dialog_min_size)
# 设置标题和内容(可通过函数修改)
set_dialog_title("默认标题")
set_dialog_content("默认内容")
# 添加取消按钮
var cancel_btn = self.add_cancel_button(cancel_text)
_customize_button(cancel_btn)
# 获取并设置确认按钮
var ok_btn = self.get_ok_button()
ok_btn.text = ok_text
_customize_button(ok_btn)
# 设置按钮样式属性
self.add_theme_constant_override("buttons_min_height", 40)
self.add_theme_constant_override("buttons_min_width", 120)
self.add_theme_constant_override("buttons_separation", 16)
# 添加样式美化
_apply_custom_theme()
func set_dialog_position(new_position :Vector2):
self.position = new_position
pass
func set_dialog_title(title: String) -> void:
self.title = title
func set_dialog_content(content: String) -> void:
self.dialog_text = content
func set_ok_text(text: String) -> void:
ok_text = text
get_ok_button().text = text
func set_cancel_text(text: String) -> void:
cancel_text = text
# 注意add_cancel_button 只能调用一次,想动态更新需要重建按钮
func _customize_button(button: Button) -> void:
button.custom_minimum_size = Vector2(120, 40)
button.add_theme_color_override("font_color", Color.WHITE)
button.add_theme_color_override("font_color_pressed", Color.WHITE)
button.add_theme_color_override("font_color_hover", Color.WHITE)
button.add_theme_color_override("bg_color", Color("3c82f6")) # 蓝色
button.add_theme_color_override("bg_color_hover", Color("2563eb"))
button.add_theme_color_override("bg_color_pressed", Color("1e40af"))
button.add_theme_color_override("bg_color_disabled", Color("94a3b8"))
func _apply_custom_theme() -> void:
# 设置面板背景颜色
var panel_style := StyleBoxFlat.new()
#panel_style.bg_color = Color.AQUA # very light gray
panel_style.set_border_width_all(2)
#panel_style.border_color = Color("cbd5e1")
self.add_theme_stylebox_override("panel", panel_style) # ✅ 修正方法名
# 设置文字颜色(内容部分)
var label = self.get_label()
label.add_theme_color_override("font_color", Color("1e293b")) # 深灰蓝
# 确认按钮点击
func _on_confirmed() -> void:
print("确认按钮被点击")
# 取消按钮点击
func _on_canceled() -> void:
print("取消按钮被点击")