netfishing/ui/components/bubble_menu/bubble_menu_profile.gd

92 lines
2.9 KiB
GDScript3
Raw Normal View History

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