feat: windows moving

This commit is contained in:
Gerard Gascón 2025-04-04 16:38:43 +02:00
parent f32dd932f6
commit a0a746008e
4 changed files with 44 additions and 1 deletions

View file

@ -30,5 +30,10 @@ func move_window_to_bottom_right():
func _unhandled_input(event: InputEvent) -> void: func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("ui_accept"): 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) add_child(dragon)
func _dragon_place_back(dragon: Dragon):
print(dragon)

View file

@ -1,4 +1,5 @@
extends Control extends Control
class_name Draggable
var dragging: bool = false var dragging: bool = false
@ -41,4 +42,5 @@ func _is_inside_main_window() -> bool:
func _destroy_dragon() -> void: func _destroy_dragon() -> void:
dragon.on_place_back()
dragon.queue_free() dragon.queue_free()

View file

@ -1,5 +1,40 @@
extends Window extends Window
class_name Dragon class_name Dragon
@export var dragon_speed: float = 20.0
@onready var _actual_position: Vector2 = position
var main_window_rect: Rect2i 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)

View file

@ -13,6 +13,7 @@ unresizable = true
borderless = true borderless = true
transparent = true transparent = true
script = ExtResource("1_ctdir") script = ExtResource("1_ctdir")
dragon_speed = 100.0
[node name="DragDropDetector" type="Control" parent="."] [node name="DragDropDetector" type="Control" parent="."]
layout_mode = 3 layout_mode = 3