feat: properly scale instantiated dragons

This commit is contained in:
Gerard Gascón 2025-04-05 12:42:16 +02:00
parent a169e953c3
commit 09586aaa5e
5 changed files with 12 additions and 5 deletions

View file

@ -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)

View file

@ -7,3 +7,4 @@
[node name="Sprite" type="Sprite2D" parent="."]
position = Vector2(0, 1)
texture = ExtResource("1_ixu8j")
offset = Vector2(64, 64)

View file

@ -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)

View file

@ -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)

View file

@ -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()