Randoloot/scripts/ui/hud_button_style.gd
2026-10-19 22:33:24 +02:00

31 lines
1.4 KiB
GDScript

extends RefCounted
static func apply(button: Button, accent: Color = Color("91dbea")) -> void:
button.focus_mode = Control.FOCUS_NONE
button.add_theme_font_size_override("font_size", 11)
button.add_theme_color_override("font_color", accent.lightened(0.25))
button.add_theme_color_override("font_hover_color", Color.WHITE)
button.add_theme_color_override("font_pressed_color", Color.WHITE)
button.add_theme_color_override("font_disabled_color", Color("566b7d"))
button.add_theme_stylebox_override("normal", _style(Color("10212e"), accent.darkened(0.45)))
button.add_theme_stylebox_override("hover", _style(Color("193446"), accent))
button.add_theme_stylebox_override("pressed", _style(accent.darkened(0.72), accent.lightened(0.15)))
button.add_theme_stylebox_override("disabled", _style(Color("101820"), Color("2c3b46")))
button.add_theme_constant_override("outline_size", 0)
static func _style(background: Color, border: Color) -> StyleBoxFlat:
var style := StyleBoxFlat.new()
style.bg_color = Color(background, 0.48)
style.border_color = border
style.set_border_width_all(1)
style.border_width_left = 3
style.set_corner_radius_all(4)
style.content_margin_left = 14
style.content_margin_right = 14
style.content_margin_top = 4
style.content_margin_bottom = 4
style.shadow_color = Color(0, 0, 0, 0.24)
style.shadow_size = 3
style.shadow_offset = Vector2(0, 2)
return style