[gd_scene load_steps=2 format=3 uid="uid://bcxbw6wd54ksv"] [sub_resource type="GDScript" id="GDScript_r4thc"] script/source = "extends Control func _ready() -> void: $TemplateRing.hide() func display_rings(player: Node3D, rings: Array[Ring]) -> void: var old_rings_display := $Rings.get_children() var difference := len(rings) - len(old_rings_display) # Too many displayed, free them for i in -difference: old_rings_display[-(1 + i)].queue_free() # Not enough displayed, create some for i in difference: var new_child := $TemplateRing.duplicate() new_child.name = \"Ring\" + str(i + 1) new_child.show() $Rings.add_child(new_child) var rings_display := $Rings.get_children() var center: Vector2i = get_viewport().size / 2 for i in len(rings): rings_display[i].color = rings[i].material.albedo_color rings_display[i].rotation = rings[i].rotation.z rings_display[i].position.x = center.x + rings[i].position.x - player.ball_position.x rings_display[i].position.y = center.y - rings[i].position.y + player.ball_position.y if rings[i].collected: rings_display[i].scale = $TemplateRing.scale * 2 * min(4, max(1, rings[i].scale.x)) else: rings_display[i].scale = $TemplateRing.scale * 3 * min(4, max(1, rings[i].scale.x)) " [node name="Map" type="Control"] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 script = SubResource("GDScript_r4thc") [node name="ColorRect" type="ColorRect" parent="."] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 color = Color(1, 0, 1, 0.0392157) [node name="Rings" type="Control" parent="."] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 [node name="TemplateRing" type="ColorRect" parent="."] layout_mode = 0 offset_right = 2.0 offset_bottom = 2.0