class_name ThemedButton extends Button #@export_tool_button("Rebuild") var rebuild_action := rebuild @onready var side_decor := load("res://import/interface-elements/button_active.png") @onready var top_corner_decor := load("res://import/interface-elements/top_corner.png") @onready var lower_corner_decor := load("res://import/interface-elements/lower_corner.png") func _ready() -> void: print(owner) rebuild() theme_changed.connect(rebuild) resized.connect(rebuild) clip_contents = true var container: PanelContainer func rebuild(): for child in get_children(): child.free() match theme_type_variation: "H1Button": var top_corner:= TextureRect.new() top_corner.texture = top_corner_decor add_child(top_corner) top_corner.expand_mode = TextureRect.EXPAND_FIT_WIDTH_PROPORTIONAL top_corner.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT top_corner.size = Vector2(size.y, size.y) focus_entered.connect(top_corner.show) focus_exited.connect(top_corner.hide) top_corner.visible = has_focus() var lower_corner:= TextureRect.new() lower_corner.texture = lower_corner_decor add_child(lower_corner, true, Node.INTERNAL_MODE_DISABLED) lower_corner.expand_mode = TextureRect.EXPAND_IGNORE_SIZE lower_corner.stretch_mode = TextureRect.STRETCH_SCALE lower_corner.size = Vector2(size.y * lower_corner_decor.get_width() / lower_corner_decor.get_height(), size.y) lower_corner.set_anchors_preset(Control.PRESET_BOTTOM_RIGHT, true) lower_corner.position = size-lower_corner.size _: var side_thing:= TextureRect.new() side_thing.texture = side_decor add_child(side_thing) side_thing.expand_mode = TextureRect.EXPAND_IGNORE_SIZE side_thing.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT side_thing.size = Vector2(size.y, size.y) focus_entered.connect(side_thing.show) focus_exited.connect(side_thing.hide) side_thing.hide()