31 lines
1,009 B
GDScript
31 lines
1,009 B
GDScript
class_name Selectable
|
|
extends Area2D
|
|
|
|
signal clicked
|
|
|
|
var selection_sprite: Sprite2D
|
|
|
|
func _ready():
|
|
if selection_sprite: return
|
|
|
|
var parent_sprite = get_parent() as Sprite2D
|
|
selection_sprite = Sprite2D.new()
|
|
selection_sprite.texture = parent_sprite.texture.duplicate(true)
|
|
var scale_x = ((selection_sprite.texture.get_size().x + 10) / selection_sprite.texture.get_size().x)
|
|
var scale_y = ((selection_sprite.texture.get_size().y + 10) / selection_sprite.texture.get_size().y)
|
|
selection_sprite.scale = Vector2(scale_x,scale_y)
|
|
selection_sprite.show_behind_parent = true
|
|
selection_sprite.modulate = Color.BLACK
|
|
selection_sprite.visible = false
|
|
parent_sprite.call_deferred("add_child", selection_sprite)
|
|
parent_sprite.call_deferred("move_child", selection_sprite, 0)
|
|
|
|
func _on_mouse_entered():
|
|
selection_sprite.show()
|
|
|
|
func _on_mouse_exited():
|
|
selection_sprite.hide()
|
|
|
|
func _on_input_event(viewport, event, shape_idx):
|
|
if event is InputEventMouseButton and event.is_pressed():
|
|
clicked.emit()
|