42 lines
1 KiB
GDScript3
42 lines
1 KiB
GDScript3
|
|
||
|
extends TextureButton
|
||
|
|
||
|
@export var text : String = "Sample Text"
|
||
|
@export var pointer_margin_from_center : int = 100
|
||
|
@export var leftPointer : Sprite2D
|
||
|
@export var rightPointer : Sprite2D
|
||
|
@export var textBox : RichTextLabel
|
||
|
|
||
|
# Engine Callbacks
|
||
|
func _ready():
|
||
|
textBox.parse_bbcode("[center] %s [/center]" % [text])
|
||
|
pass
|
||
|
|
||
|
func _process(delta):
|
||
|
handle_hover_and_focus()
|
||
|
handle_x_position()
|
||
|
|
||
|
|
||
|
func handle_hover_and_focus() -> void:
|
||
|
if has_focus():
|
||
|
leftPointer.visible = true
|
||
|
rightPointer.visible = true
|
||
|
elif is_hovered():
|
||
|
leftPointer.visible = true
|
||
|
leftPointer.modulate.a = 0.5
|
||
|
rightPointer.visible = true
|
||
|
rightPointer.modulate.a = 0.5
|
||
|
else:
|
||
|
leftPointer.visible = false
|
||
|
leftPointer.modulate.a = 1
|
||
|
rightPointer.visible = false
|
||
|
rightPointer.modulate.a = 1
|
||
|
pass
|
||
|
|
||
|
|
||
|
func handle_x_position() -> void:
|
||
|
var center_x = get_parent().position.x + (get_parent().size.x / 2.0)
|
||
|
leftPointer.global_position.x = center_x - pointer_margin_from_center
|
||
|
rightPointer.global_position.x = center_x + pointer_margin_from_center
|
||
|
pass
|