42 lines
822 B
GDScript
42 lines
822 B
GDScript
@tool
|
|
extends Composer
|
|
class_name Command
|
|
|
|
signal clicked
|
|
|
|
@export var icon: Texture2D:
|
|
set(val):
|
|
if val is Texture2D:
|
|
icon = val
|
|
else:
|
|
icon = PlaceholderTexture2D.new()
|
|
_check_compose()
|
|
|
|
@export var color: Color:
|
|
set(val):
|
|
if val is Color:
|
|
color = val
|
|
else:
|
|
color = Color.BLACK
|
|
_check_compose()
|
|
|
|
@export var code: String
|
|
|
|
func _compose():
|
|
$badge/icon.texture = icon
|
|
$badge.self_modulate = color
|
|
super._compose()
|
|
|
|
func _on_click_input_event(viewport, event, shape_idx):
|
|
if event is InputEventMouseButton:
|
|
if event.button_index == MOUSE_BUTTON_LEFT:
|
|
get_viewport().set_input_as_handled()
|
|
clicked.emit()
|
|
|
|
func apply(container: Node2D, pos: Vector2):
|
|
if get_parent() != container:
|
|
if get_parent():
|
|
get_parent().remove_child(self)
|
|
container.add_child(self)
|
|
position = pos
|