@tool extends Label @export_category("FontAwesome") @export_range(1, 16384) var icon_size: int = 16: set = set_icon_size @export_enum("solid", "regular", "brands") var icon_type: String = "solid": set = set_icon_type @export var icon_name: String = "circle-question": set = set_icon_name const icon_fonts: Dictionary = { "solid": "res://addons/fontawesome/fonts/fa-solid-900.woff2", "regular": "res://addons/fontawesome/fonts/fa-regular-400.woff2", "brands": "res://addons/fontawesome/fonts/fa-brands-400.woff2" } const cheatsheet: Dictionary = preload("res://addons/fontawesome/All.gd").all func _init(): horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER vertical_alignment = VERTICAL_ALIGNMENT_CENTER # disable some things, this is icon not text auto_translate = false localize_numeral_system = false set_icon_type(icon_type) set_icon_size(icon_size) set_icon_name(icon_name) func set_icon_size(new_size: int): icon_size = clamp(new_size, 1, 16384) add_theme_font_size_override("font_size", icon_size) size = Vector2(icon_size, icon_size) func set_icon_type(new_type: String): icon_type = new_type match icon_type: "solid", "regular", "brands": add_theme_font_override("font", load(icon_fonts[icon_type])) func set_icon_name(new_name: String): icon_name = new_name var iconcode = "" if icon_name in cheatsheet[icon_type]: iconcode = cheatsheet[icon_type][icon_name] set_text(iconcode)