DreamBall/menus/menu.tscn

140 lines
4 KiB
Text
Raw Normal View History

[gd_scene load_steps=8 format=3 uid="uid://tasbgr10p84c"]
[ext_resource type="AudioStream" uid="uid://bnbf1nfaxuagi" path="res://sounds/select.ogg" id="1_y8e4h"]
[ext_resource type="AudioStream" uid="uid://bq3tw55s0ud55" path="res://sounds/confirm.ogg" id="2_hl3ms"]
[sub_resource type="GDScript" id="GDScript_18a3y"]
script/source = "extends MarginContainer
signal disabled
func add(node: Control, return_button: bool):
var add_to := $VSplitContainer/MarginContainer/ColorRect
var children := add_to.get_children(true)
for child in children:
child.queue_free()
var regex := RegEx.new()
regex.compile(\"([A-Z])\")
var menu_name := regex.sub(node.name, \" $1\", true, 1)
$VSplitContainer/Label.text = menu_name
add_to.add_child(node)
$VSplitContainer/AnimationPlayer.play(\"split_offset\")
if return_button:
var button = Button.new()
button.text = \"Return\"
button.anchor_top = 1.0
button.anchor_bottom = 1.0
button.grow_vertical = Control.GROW_DIRECTION_BEGIN
button.connect(\"pressed\", disable)
node.add_child(button)
link_to_sounds(node)
func link_to_sounds(node: Control):
var children := node.find_children(\"*\", \"\", true, false)
var buttons := children.filter(func(child): return is_instance_of(child, Button))
for button in buttons as Array[Button]:
button.mouse_entered.connect(func(): $Select.play())
button.pressed.connect(func(): $Confirm.play())
var sliders := children.filter(func(child): return is_instance_of(child, HSlider))
for slider in sliders as Array[HSlider]:
slider.mouse_entered.connect(func(): $Select.play())
slider.drag_ended.connect(func(_value): $Confirm.play())
func disable():
$VSplitContainer/AnimationPlayer.play_backwards(\"split_offset\")
disabled.emit()
"
[sub_resource type="Animation" id="Animation_y8e4h"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:split_offset")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [500]
}
[sub_resource type="Animation" id="Animation_85u52"]
resource_name = "split_offset"
length = 0.5
step = 0.5
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:split_offset")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [500, 0]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_hl3ms"]
_data = {
&"RESET": SubResource("Animation_y8e4h"),
&"split_offset": SubResource("Animation_85u52")
}
[sub_resource type="LabelSettings" id="LabelSettings_2d4ws"]
font_size = 48
[node name="Menu" type="MarginContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 20
theme_override_constants/margin_top = 20
theme_override_constants/margin_right = 20
theme_override_constants/margin_bottom = 20
script = SubResource("GDScript_18a3y")
[node name="VSplitContainer" type="VSplitContainer" parent="."]
layout_mode = 2
split_offset = 500
dragger_visibility = 1
[node name="AnimationPlayer" type="AnimationPlayer" parent="VSplitContainer"]
libraries = {
&"": SubResource("AnimationLibrary_hl3ms")
}
[node name="Label" type="Label" parent="VSplitContainer"]
custom_minimum_size = Vector2(1, 1)
layout_mode = 2
text = "MENU NAME"
label_settings = SubResource("LabelSettings_2d4ws")
horizontal_alignment = 1
autowrap_mode = 3
uppercase = true
[node name="MarginContainer" type="MarginContainer" parent="VSplitContainer"]
layout_mode = 2
theme_override_constants/margin_top = 20
[node name="ColorRect" type="ColorRect" parent="VSplitContainer/MarginContainer"]
layout_mode = 2
color = Color(0, 0, 0, 1)
[node name="Select" type="AudioStreamPlayer" parent="."]
stream = ExtResource("1_y8e4h")
bus = &"Sounds"
[node name="Confirm" type="AudioStreamPlayer" parent="."]
stream = ExtResource("2_hl3ms")
bus = &"Sounds"