Commit a0a74600 authored by Gerard Gascón's avatar Gerard Gascón
Browse files

feat: windows moving

parent f32dd932
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -30,5 +30,10 @@ func move_window_to_bottom_right():

func _unhandled_input(event: InputEvent) -> void:
	if event.is_action_pressed("ui_accept"):
		var dragon = _instantiator.instantiate()
		var dragon: Dragon = _instantiator.instantiate()
		dragon.place_back.connect(_dragon_place_back)
		add_child(dragon)


func _dragon_place_back(dragon: Dragon):
	print(dragon)
+2 −0
Original line number Diff line number Diff line
extends Control
class_name Draggable


var dragging: bool = false
@@ -41,4 +42,5 @@ func _is_inside_main_window() -> bool:


func _destroy_dragon() -> void:
	dragon.on_place_back()
	dragon.queue_free()
+35 −0
Original line number Diff line number Diff line
extends Window
class_name Dragon

@export var dragon_speed: float = 20.0

@onready var _actual_position: Vector2 = position
var main_window_rect: Rect2i
@onready var draggable: Draggable = $DragDropDetector

var _walking: bool = false
var _target_pos: Vector2

signal place_back(dragon: Dragon)


func on_place_back() -> void:
	place_back.emit(self)


func _process(delta: float) -> void:
	if draggable.dragging:
		_actual_position = position
		return
	
	if not _walking:
		_pick_random_screen_position()
	
	_move_to_target(delta)


func _move_to_target(delta: float):
	if _actual_position.distance_to(_target_pos) > 10.0:
		var direction: Vector2 = (_target_pos - _actual_position).normalized()
		_actual_position += dragon_speed * direction * delta
		position = _actual_position


func _pick_random_screen_position() -> void:
	_walking = true
	_target_pos = Vector2i(10, 10)
+1 −0
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ unresizable = true
borderless = true
transparent = true
script = ExtResource("1_ctdir")
dragon_speed = 100.0

[node name="DragDropDetector" type="Control" parent="."]
layout_mode = 3