39 lines
688 B
GDScript
39 lines
688 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 player: Node:
|
|
set(val):
|
|
if val is Player:
|
|
player = val
|
|
else:
|
|
player = null
|
|
_check_compose()
|
|
|
|
@export var code: String
|
|
|
|
func _compose():
|
|
%icon.texture = icon
|
|
%badge.self_modulate = player.color if player else Color.GRAY
|
|
super._compose()
|
|
|
|
func apply(container: Node2D, pos: Vector2):
|
|
if get_parent() != container:
|
|
if get_parent():
|
|
get_parent().remove_child(self)
|
|
container.add_child(self)
|
|
position = pos
|
|
|
|
func _on_badge_pressed():
|
|
clicked.emit()
|