91 lines
2.9 KiB
GDScript
91 lines
2.9 KiB
GDScript
class_name BubbleMenuProfile
|
|
extends Resource
|
|
|
|
@export_group("Typography")
|
|
@export_range(0.01, 1.0, 0.001) var font_size_ratio: float = 0.17
|
|
|
|
@export_group("Interaction")
|
|
@export_range(1.0, 1.2, 0.001) var hover_focus_scale: float = 1.035
|
|
@export_range(0.0, 16.0, 0.1) var hover_focus_lift: float = 2.0
|
|
@export_range(0.1, 30.0, 0.1) var emphasis_speed: float = 10.0
|
|
@export_range(0.0, 1.0, 0.01) var emphasized_deformation_scale: float = 0.6
|
|
|
|
@export_group("Cluster")
|
|
@export_range(0.1, 30.0, 0.1) var position_response: float = 8.0
|
|
@export_range(0.0, 24.0, 0.1) var contact_gap: float = 3.0
|
|
@export_range(0.0, 24.0, 0.1) var maximum_separation: float = 3.0
|
|
|
|
@export_group("Shape")
|
|
@export_range(0.0, 32.0, 0.5) var content_margin: float = 8.0
|
|
@export_range(0, 512, 1) var corner_radius: int = 128
|
|
@export_range(0, 12, 1) var normal_border_width: int = 2
|
|
@export_range(0, 12, 1) var emphasized_border_width: int = 3
|
|
|
|
@export_group("Colors")
|
|
@export var normal_fill: Color = Color(0.82, 0.93, 0.96, 0.96)
|
|
@export var normal_border: Color = Color(0.91, 0.98, 1.0, 0.85)
|
|
@export var hover_fill: Color = Color(0.91, 0.975, 0.985, 1.0)
|
|
@export var hover_border: Color = Color(1.0, 1.0, 1.0, 0.95)
|
|
@export var pressed_fill: Color = Color(0.7, 0.87, 0.92, 1.0)
|
|
@export var pressed_border: Color = Color(0.94, 0.99, 1.0, 1.0)
|
|
@export var disabled_fill: Color = Color(0.66, 0.77, 0.8, 0.78)
|
|
@export var disabled_border: Color = Color(0.81, 0.9, 0.92, 0.55)
|
|
@export var text_color: Color = Color(0.035, 0.145, 0.22, 1.0)
|
|
@export var text_hover_color: Color = Color(0.025, 0.12, 0.19, 1.0)
|
|
@export var text_pressed_color: Color = Color(0.025, 0.11, 0.17, 1.0)
|
|
@export var text_disabled_color: Color = Color(0.16, 0.25, 0.29, 0.72)
|
|
|
|
|
|
func make_normal_style() -> StyleBoxFlat:
|
|
return _make_style(
|
|
normal_fill,
|
|
normal_border,
|
|
normal_border_width
|
|
)
|
|
|
|
|
|
func make_hover_style() -> StyleBoxFlat:
|
|
return _make_style(
|
|
hover_fill,
|
|
hover_border,
|
|
emphasized_border_width
|
|
)
|
|
|
|
|
|
func make_pressed_style() -> StyleBoxFlat:
|
|
return _make_style(
|
|
pressed_fill,
|
|
pressed_border,
|
|
emphasized_border_width
|
|
)
|
|
|
|
|
|
func make_disabled_style() -> StyleBoxFlat:
|
|
return _make_style(
|
|
disabled_fill,
|
|
disabled_border,
|
|
normal_border_width
|
|
)
|
|
|
|
|
|
func _make_style(
|
|
fill_color: Color,
|
|
outline_color: Color,
|
|
outline_width: int,
|
|
) -> StyleBoxFlat:
|
|
var style := StyleBoxFlat.new()
|
|
style.content_margin_left = content_margin
|
|
style.content_margin_top = content_margin
|
|
style.content_margin_right = content_margin
|
|
style.content_margin_bottom = content_margin
|
|
style.bg_color = fill_color
|
|
style.border_width_left = outline_width
|
|
style.border_width_top = outline_width
|
|
style.border_width_right = outline_width
|
|
style.border_width_bottom = outline_width
|
|
style.border_color = outline_color
|
|
style.corner_radius_top_left = corner_radius
|
|
style.corner_radius_top_right = corner_radius
|
|
style.corner_radius_bottom_right = corner_radius
|
|
style.corner_radius_bottom_left = corner_radius
|
|
return style
|