@tool extends TextureButton @onready var panel : PanelContainer = $Panel @onready var anim_player : AnimationPlayer = $AnimationPlayer var panel_shown : bool = false @export var primed : bool = false var locked : bool = true var mat : ShaderMaterial var _circle_size : float = 0 @export var circle_size: float: get(): return _circle_size set(value): _circle_size = value queue_redraw() @export var add_color : Color @export var threshold : float @export var thickness : float = 5 @export var max_circle_size : float = 200 func _ready() -> void: mat = %CanvasGroup.material if primed: anim_player.play("primed") func _process(delta: float) -> void: mat.set_shader_parameter("add_color", add_color) mat.set_shader_parameter("threshold", threshold) func unlock() -> void: locked = false primed = false anim_player.play("unlock") $AudioStreamPlayer2D.play() func _on_mouse_entered() -> void: if !panel_shown: panel.visible = true panel_shown = true pass # Replace with function body. func _buttonn_pressed() -> void: if primed: unlock() func _on_mouse_exited() -> void: if panel_shown: panel.visible = false panel_shown = false pass # Replace with function body. func _draw() -> void: if _circle_size != 0: draw_circle(global_position, _circle_size, add_color, false, thickness * (max_circle_size - _circle_size) / max_circle_size)