Loading scenes/main.gd +6 −1 Original line number Diff line number Diff line Loading @@ -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) scenes/window/draggable.gd +2 −0 Original line number Diff line number Diff line extends Control class_name Draggable var dragging: bool = false Loading Loading @@ -41,4 +42,5 @@ func _is_inside_main_window() -> bool: func _destroy_dragon() -> void: dragon.on_place_back() dragon.queue_free() scenes/window/dragon.gd +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) scenes/window/dragon_popup.tscn +1 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading
scenes/main.gd +6 −1 Original line number Diff line number Diff line Loading @@ -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)
scenes/window/draggable.gd +2 −0 Original line number Diff line number Diff line extends Control class_name Draggable var dragging: bool = false Loading Loading @@ -41,4 +42,5 @@ func _is_inside_main_window() -> bool: func _destroy_dragon() -> void: dragon.on_place_back() dragon.queue_free()
scenes/window/dragon.gd +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)
scenes/window/dragon_popup.tscn +1 −0 Original line number Diff line number Diff line Loading @@ -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 Loading