mirror of
https://github.com/git-learning-game/oh-my-git.git
synced 2024-11-03 19:04:40 +01:00
53 lines
1.5 KiB
GDScript
53 lines
1.5 KiB
GDScript
extends Node2D
|
|
|
|
var hovered = false
|
|
var highlighted = false setget _set_highlighted
|
|
var dragged = false
|
|
|
|
func _ready():
|
|
_set_highlighted(false)
|
|
|
|
func _process(delta):
|
|
if dragged:
|
|
if get_parent().type == "file":
|
|
var diff = get_viewport().get_mouse_position() - get_parent().global_position
|
|
get_parent().move(diff)
|
|
|
|
func _mouse_entered(_area):
|
|
hovered = true
|
|
var tween = Tween.new()
|
|
tween.interpolate_property($Highlight/Sprite.material, "shader_param/hovered", 0, 1, 0.1, Tween.TRANS_CUBIC, Tween.EASE_IN_OUT)
|
|
add_child(tween)
|
|
tween.start()
|
|
|
|
func _mouse_exited(_area):
|
|
hovered = false
|
|
var tween = Tween.new()
|
|
tween.interpolate_property($Highlight/Sprite.material, "shader_param/hovered", 1, 0, 0.1, Tween.TRANS_CUBIC, Tween.EASE_IN_OUT)
|
|
add_child(tween)
|
|
tween.start()
|
|
|
|
func _input(event):
|
|
if event is InputEventMouseButton:
|
|
if event.button_index == BUTTON_LEFT and !event.pressed:
|
|
if hovered:
|
|
if highlighted and game.dragged_object:
|
|
game.dragged_object.dropped_on(get_parent_with_type())
|
|
dragged = false
|
|
if event.button_index == BUTTON_LEFT and event.pressed and hovered:
|
|
if get_parent().type == "file" and get_parent().item_type == "wd":
|
|
dragged = true
|
|
|
|
func _set_highlighted(new_highlighted):
|
|
highlighted = new_highlighted
|
|
$Highlight.visible = highlighted
|
|
|
|
func get_parent_with_type():
|
|
var parent = get_parent()
|
|
while(!parent.get("type")):
|
|
parent = parent.get_parent()
|
|
return parent
|
|
|
|
func highlight(type):
|
|
if get_parent_with_type().type == type:
|
|
_set_highlighted(true)
|