From 09586aaa5ee66c2ddc37639e03b547996a57e294 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerard=20Gasc=C3=B3n?= <52170489+GerardGascon@users.noreply.github.com> Date: Sat, 5 Apr 2025 12:42:16 +0200 Subject: [PATCH] feat: properly scale instantiated dragons --- scenes/dragons/dragon.tscn | 1 + scenes/dragons/dragon_sprite.tscn | 1 + scenes/window/dragon.gd | 6 ++++++ scenes/window/dragon_popup.tscn | 4 ++-- src/dragon_instantiator.gd | 5 ++--- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/scenes/dragons/dragon.tscn b/scenes/dragons/dragon.tscn index 332d39c..6b3630b 100644 --- a/scenes/dragons/dragon.tscn +++ b/scenes/dragons/dragon.tscn @@ -10,6 +10,7 @@ size = Vector2(128, 128) script = ExtResource("1_jccds") [node name="Dragon" parent="." instance=ExtResource("2_l1h0r")] +position = Vector2(-64, -64) [node name="CollisionShape2D" type="CollisionShape2D" parent="."] position = Vector2(0, 1) diff --git a/scenes/dragons/dragon_sprite.tscn b/scenes/dragons/dragon_sprite.tscn index b4b3590..6bdfeaa 100644 --- a/scenes/dragons/dragon_sprite.tscn +++ b/scenes/dragons/dragon_sprite.tscn @@ -7,3 +7,4 @@ [node name="Sprite" type="Sprite2D" parent="."] position = Vector2(0, 1) texture = ExtResource("1_ixu8j") +offset = Vector2(64, 64) diff --git a/scenes/window/dragon.gd b/scenes/window/dragon.gd index b9ff932..62f5341 100644 --- a/scenes/window/dragon.gd +++ b/scenes/window/dragon.gd @@ -2,6 +2,7 @@ extends Window class_name Dragon @export var dragon_speed: float = 20.0 +@export var dragon: Node2D @onready var _actual_position: Vector2 = position var main_window_rect: Rect2i @@ -63,3 +64,8 @@ func _pick_random_screen_position() -> void: ) _target_pos = random_pos + + +func set_scale(scale: float) -> void: + size = Vector2i(size.x * scale, size.y * scale) + dragon.scale = Vector2(scale, scale) diff --git a/scenes/window/dragon_popup.tscn b/scenes/window/dragon_popup.tscn index 165e786..6979d4e 100644 --- a/scenes/window/dragon_popup.tscn +++ b/scenes/window/dragon_popup.tscn @@ -4,7 +4,7 @@ [ext_resource type="Script" uid="uid://ch7d3wo8ucskb" path="res://scenes/window/draggable.gd" id="2_2r6si"] [ext_resource type="PackedScene" uid="uid://baa8gpicw2yg0" path="res://scenes/dragons/dragon_sprite.tscn" id="3_ctdir"] -[node name="DragonPopup" type="Window"] +[node name="DragonPopup" type="Window" node_paths=PackedStringArray("dragon")] disable_3d = true transparent_bg = true size = Vector2i(128, 128) @@ -13,6 +13,7 @@ borderless = true transparent = true script = ExtResource("1_ctdir") dragon_speed = 100.0 +dragon = NodePath("Dragon") [node name="DragDropDetector" type="Control" parent="."] layout_mode = 3 @@ -22,4 +23,3 @@ offset_bottom = 40.0 script = ExtResource("2_2r6si") [node name="Dragon" parent="." instance=ExtResource("3_ctdir")] -position = Vector2(64, 64) diff --git a/src/dragon_instantiator.gd b/src/dragon_instantiator.gd index 40dba03..ef7b458 100644 --- a/src/dragon_instantiator.gd +++ b/src/dragon_instantiator.gd @@ -28,7 +28,7 @@ func _calculate_relative_position(position: Vector2) -> Vector2i: func _instantiate_dragon(relative_position: Vector2i) -> Node: - var dragon: Window = _dragon_template.instantiate() + var dragon: Dragon = _dragon_template.instantiate() var window_position: Vector2i = DisplayServer.window_get_position() var window_size: Vector2i = DisplayServer.window_get_size() @@ -36,8 +36,7 @@ func _instantiate_dragon(relative_position: Vector2i) -> Node: dragon.position = window_position + relative_position - dragon.size / 2 var size: float = _calculate_window_scale().y - dragon.size = Vector2i(dragon.size.x * size, dragon.size.y * size) - dragon.content_scale_factor = 0.5 + dragon.set_scale(size) dragon.main_window_rect = Rect2i(window_position, window_size) dragon.show()