@tool extends PanelContainer var save_modulate: Color func set_text(val: String): $button.set_text(val) func set_pressed(val: bool): $button.set_pressed(val) func set_disabled(val: bool): disabled = val func button_connect(button_signal: String, proc: Callable): $button.connect(button_signal, proc) func get_text(): return $button.get_text() func is_pressed(): return $button.is_pressed() func is_toggle_mode(): return $button.is_toggle_mode() @export var texture_state0: Texture2D = preload('res://data/кнопка-квадрат-0.png'): set(val): $state.set_texture(val) @export var texture_state1: Texture2D = preload('res://data/кнопка-квадрат-1.png'): set(val): $state.set_texture(val) @export var text: String = '': set(val): $button.set_text(val) get: return $button.get_text() @export var disabled: bool = false: set(val): $button.set_disabled(val) $back.disabled = val if val: save_modulate = $state.modulate $state.modulate *= Color(1.0, 1.0, 1.0, 0.5) else: $state.modulate = save_modulate get: return $button.disabled @export var pressed: bool = false: set(val): $button.set_pressed(val) get: return $button.is_pressed() @export var toggle_mode: bool = false: set(val): if is_inside_tree(): $button.set_toggle_mode(val) get: return $button.is_toggle_mode() func _on_resized() -> void: $back.scale = size $back.material.set('shader_parameter/scale', size / Vector2(20.0, 20.0)) func _enter_tree() -> void: $back.scale = size $back.material.set('shader_parameter/scale', size / Vector2(20.0, 20.0)) save_modulate = modulate func set_toggle_mode (val: bool): if is_inside_tree(): $button.set_toggle_mode(val) func _on_button_toggled(val: bool): if val: $state.set_texture(texture_state1) else: $state.set_texture(texture_state0)