2020-10-13 14:16:36 +02:00
|
|
|
extends Node2D
|
|
|
|
|
|
|
|
var hovered = false
|
2023-09-06 16:04:23 +02:00
|
|
|
var highlighted = false: set = _set_highlighted
|
2020-10-13 14:16:36 +02:00
|
|
|
|
|
|
|
func _ready():
|
2020-11-03 14:39:54 +01:00
|
|
|
_set_highlighted(false)
|
2020-10-13 14:16:36 +02:00
|
|
|
|
2020-11-07 13:59:47 +01:00
|
|
|
func _mouse_entered(_area):
|
2020-10-13 14:16:36 +02:00
|
|
|
hovered = true
|
2023-09-06 16:04:23 +02:00
|
|
|
var tween = get_tree().create_tween()
|
|
|
|
tween.tween_property($Highlight/Sprite2D.material, "shader_param/hovered",1,0.1)
|
|
|
|
#tween.interpolate_property($Highlight/Sprite2D.material, "shader_param/hovered", 0, 1, 0.1, Tween.TRANS_CUBIC, Tween.EASE_IN_OUT)
|
|
|
|
#add_child(tween)
|
|
|
|
#tween.start()
|
2020-10-13 14:16:36 +02:00
|
|
|
|
2020-11-07 13:59:47 +01:00
|
|
|
func _mouse_exited(_area):
|
2020-10-13 14:16:36 +02:00
|
|
|
hovered = false
|
2023-09-06 16:04:23 +02:00
|
|
|
var tween = get_tree().create_tween()
|
|
|
|
tween.tween_property($Highlight/Sprite2D.material, "shader_param/hovered", 0, 0.1)
|
|
|
|
|
2020-10-13 14:16:36 +02:00
|
|
|
|
|
|
|
func _input(event):
|
|
|
|
if event is InputEventMouseButton:
|
2023-09-06 16:04:23 +02:00
|
|
|
if event.button_index == MOUSE_BUTTON_LEFT and !event.pressed and hovered:
|
2020-11-03 13:08:07 +01:00
|
|
|
if highlighted and game.dragged_object:
|
2020-11-10 12:14:45 +01:00
|
|
|
game.dragged_object.dropped_on(get_parent_with_type())
|
2020-11-03 12:39:40 +01:00
|
|
|
|
|
|
|
func _set_highlighted(new_highlighted):
|
|
|
|
highlighted = new_highlighted
|
|
|
|
$Highlight.visible = highlighted
|
2020-11-10 12:14:45 +01:00
|
|
|
|
|
|
|
func get_parent_with_type():
|
|
|
|
var parent = get_parent()
|
|
|
|
while(!parent.get("type")):
|
|
|
|
parent = parent.get_parent()
|
|
|
|
return parent
|
2020-11-03 12:39:40 +01:00
|
|
|
|
|
|
|
func highlight(type):
|
2020-11-10 12:14:45 +01:00
|
|
|
if get_parent_with_type().type == type:
|
2020-11-03 12:39:40 +01:00
|
|
|
_set_highlighted(true)
|