From 014cf47823347eb44b7da7869e59b67d0d523351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerard=20Gasc=C3=B3n?= Date: Fri, 4 Apr 2025 17:00:17 +0200 Subject: [PATCH] feat: dragons moving freely --- scenes/window/dragon.gd | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/scenes/window/dragon.gd b/scenes/window/dragon.gd index 109e914..83c70b1 100644 --- a/scenes/window/dragon.gd +++ b/scenes/window/dragon.gd @@ -8,7 +8,9 @@ var main_window_rect: Rect2i @onready var draggable: Draggable = $DragDropDetector var _walking: bool = false +var _thinking_path: bool = false var _target_pos: Vector2 +var rng: RandomNumberGenerator = RandomNumberGenerator.new() signal place_back(dragon: Dragon) @@ -17,13 +19,20 @@ func on_place_back() -> void: place_back.emit(self) +func _ready() -> void: + _pick_random_screen_position() + + func _process(delta: float) -> void: if draggable.dragging: _actual_position = position return if not _walking: - _pick_random_screen_position() + if not _thinking_path: + _thinking_path = true + await get_tree().create_timer(rng.randf_range(2, 7)).timeout + _pick_random_screen_position() _move_to_target(delta) @@ -33,8 +42,22 @@ func _move_to_target(delta: float): var direction: Vector2 = (_target_pos - _actual_position).normalized() _actual_position += dragon_speed * direction * delta position = _actual_position + return + + _walking = false func _pick_random_screen_position() -> void: _walking = true - _target_pos = Vector2i(10, 10) + _thinking_path = false + + var display_index: int = DisplayServer.window_get_current_screen() + var work_area_position: Vector2i = DisplayServer.screen_get_usable_rect(display_index).position + var work_area_size: Vector2i = DisplayServer.screen_get_usable_rect(display_index).size + + var random_pos: Vector2i = Vector2i( + work_area_position.x + rng.randi_range(10, work_area_size.x - 10 - size.x), + work_area_position.y + rng.randi_range(10, work_area_size.y - 10 - size.y) + ) + + _target_pos = random_pos