CrossingOver/scenes/logic/net.gd
2024-03-14 00:53:46 -03:00

64 lines
1.5 KiB
GDScript

extends Sprite2D
signal net_dropped(dropped_position: Vector2)
var sprite_rest = preload("res://images/sprites/fishing_net/ground.png")
var sprite_grabbed = preload("res://images/sprites/fishing_net/grabbed.png")
var can_move = false
var dragging = false
var using_mouse = false
var offs = Vector2.ZERO
var starting_position = Vector2.ZERO
func _ready():
starting_position = position
func _process(delta):
if not visible:
return
if can_move and Input.is_action_just_pressed("ui_accept"):
dragging = true
using_mouse = false
begin_dragging()
elif dragging and not using_mouse and Input.is_action_just_released("ui_accept"):
stop_dragging()
if dragging:
if using_mouse:
position = get_global_mouse_position() - offs
else:
position += Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down") * delta * 400
func begin_dragging():
texture = sprite_grabbed
$Shadow.visible = true
$"..".play_sfx("net_picked_up")
if using_mouse:
offs = get_global_mouse_position() - global_position
else:
offs = Vector2.ZERO
func stop_dragging():
dragging = false
visible = false
$Shadow.visible = false
texture = sprite_rest
$Button.disabled = true
$ResetTimer.start()
net_dropped.emit(position)
position = starting_position
func _on_button_down():
dragging = true
using_mouse = true
begin_dragging()
func _on_button_up():
stop_dragging()
func _on_reset_timer_timeout():
texture = sprite_rest
$Button.disabled = false
visible = true
if can_move:
$"..".play_sfx("net_returns")