58 lines
861 B
GDScript
58 lines
861 B
GDScript
@tool
|
|
class_name Guidance
|
|
extends Node2D
|
|
|
|
|
|
const SMALL_SIZE = Vector2(48, 48)
|
|
const BIG_SIZE = Vector2(96, 48)
|
|
|
|
|
|
enum Size {
|
|
Small,
|
|
Big,
|
|
Custom,
|
|
}
|
|
|
|
|
|
@export var custom_size := SMALL_SIZE:
|
|
set(value):
|
|
custom_size = value
|
|
if is_node_ready():
|
|
_update_size()
|
|
|
|
@export var size := Size.Small:
|
|
set(value):
|
|
size = value
|
|
if is_node_ready():
|
|
_update_size()
|
|
|
|
@export_multiline() var text := "":
|
|
set(value):
|
|
text = value
|
|
if is_node_ready():
|
|
_update_text()
|
|
|
|
|
|
@onready var rect : NinePatchRect = $NinePatchRect
|
|
@onready var label : Label = $Label
|
|
|
|
|
|
func _ready() -> void:
|
|
_update_size()
|
|
_update_text()
|
|
|
|
|
|
func _update_size() -> void:
|
|
match size:
|
|
Size.Small:
|
|
rect.size = SMALL_SIZE
|
|
Size.Big:
|
|
rect.size = BIG_SIZE
|
|
Size.Custom:
|
|
rect.size = custom_size
|
|
rect.position = -rect.size/2
|
|
|
|
|
|
func _update_text() -> void:
|
|
label.text = text
|