Polishing login menu

This commit is contained in:
Dylan Sarrazyn
2024-01-30 10:58:40 +01:00
parent 09b9a74744
commit 19551a7615
8 changed files with 249 additions and 136 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.
@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://dlsgs8uralt8n"
path="res://.godot/imported/ui_play_button.mp3-6ac9514bffe4827d3d4204b6c3be36e9.mp3str"
[deps]
source_file="res://assets/menus/login/ui_play_button.mp3"
dest_files=["res://.godot/imported/ui_play_button.mp3-6ac9514bffe4827d3d4204b6c3be36e9.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4
+11 -3
View File
@@ -18,9 +18,17 @@ border_width_bottom = 2
border_color = Color(0, 0, 0, 1) border_color = Color(0, 0, 0, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3gh3j"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3gh3j"]
bg_color = Color(0.376471, 0.470588, 0.780392, 1) bg_color = Color(0.133333, 0.133333, 0.188235, 0.698039)
border_width_bottom = 2 border_width_left = 10
border_color = Color(0, 0, 0, 1) border_width_top = 10
border_width_right = 10
border_width_bottom = 10
border_color = Color(1, 1, 1, 1)
border_blend = true
corner_radius_top_left = 32
corner_radius_top_right = 32
corner_radius_bottom_right = 32
corner_radius_bottom_left = 32
[resource] [resource]
AcceptDialog/styles/panel = SubResource("StyleBoxFlat_nikxc") AcceptDialog/styles/panel = SubResource("StyleBoxFlat_nikxc")
+23
View File
@@ -0,0 +1,23 @@
extends Control
signal button_pressed
@onready var buttons: GridContainer = %Buttons
@onready var sound_player := $ButtonSoundPlayer
func _ready():
for button in buttons.get_children(false):
button.connect("pressed", _on_button_pressed.bind(button))
func _on_button_pressed(button : TextureButton):
sound_player.play()
button.set_modulate(Color(0.5,0.5,0.5))
button.set_disabled(true)
emit_signal("button_pressed", button.name)
func reset_buttons():
for button in buttons.get_children(false):
button.set_modulate(Color(1,1,1))
button.set_disabled(false)
+112
View File
@@ -0,0 +1,112 @@
[gd_scene load_steps=16 format=3 uid="uid://djduptonofbh4"]
[ext_resource type="Script" path="res://sources/menus/code_keyboard.gd" id="1_4kb0k"]
[ext_resource type="Texture2D" uid="uid://d3rhl050u0ahl" path="res://assets/menus/login/password_background.png" id="1_qy2tt"]
[ext_resource type="Texture2D" uid="uid://de8087qre3hqd" path="res://assets/menus/login/button_symbol01_up.png" id="2_lewtn"]
[ext_resource type="Texture2D" uid="uid://ce2dk2so7yo85" path="res://assets/menus/login/button_symbol01_down.png" id="3_6vmwg"]
[ext_resource type="Texture2D" uid="uid://cq6ctjti7nroe" path="res://assets/menus/login/button_symbol02_up.png" id="4_xtie5"]
[ext_resource type="Texture2D" uid="uid://cghxguj0vdhx7" path="res://assets/menus/login/button_symbol02_down.png" id="5_ckp8y"]
[ext_resource type="Texture2D" uid="uid://bxrtewrqlop6h" path="res://assets/menus/login/button_symbol03_up.png" id="6_5kh6d"]
[ext_resource type="Texture2D" uid="uid://da7g76llxx8t5" path="res://assets/menus/login/button_symbol03_down.png" id="7_njqxu"]
[ext_resource type="Texture2D" uid="uid://bh7toiwhvln0v" path="res://assets/menus/login/button_symbol04_up.png" id="8_70a0u"]
[ext_resource type="Texture2D" uid="uid://c6od4ikuean3f" path="res://assets/menus/login/button_symbol04_down.png" id="9_ka1mx"]
[ext_resource type="Texture2D" uid="uid://d18rbiborhmow" path="res://assets/menus/login/button_symbol05_up.png" id="10_wnwqh"]
[ext_resource type="Texture2D" uid="uid://ch87nxu2c0vf8" path="res://assets/menus/login/button_symbol05_down.png" id="11_ekdax"]
[ext_resource type="Texture2D" uid="uid://eg5jrfombxb8" path="res://assets/menus/login/button_symbol06_up.png" id="12_3eke6"]
[ext_resource type="Texture2D" uid="uid://dce53jiyk6gy6" path="res://assets/menus/login/button_symbol06_down.png" id="13_mhbsr"]
[ext_resource type="AudioStream" uid="uid://dlsgs8uralt8n" path="res://assets/menus/login/ui_play_button.mp3" id="15_tcy0b"]
[node name="CodeKeyboard" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_4kb0k")
[node name="Keyboard" type="TextureRect" parent="."]
custom_minimum_size = Vector2(1624, 812)
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -406.0
offset_top = -406.0
offset_right = 406.0
grow_horizontal = 2
grow_vertical = 0
texture = ExtResource("1_qy2tt")
[node name="MarginContainer" type="MarginContainer" parent="Keyboard"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 50
theme_override_constants/margin_top = 50
theme_override_constants/margin_right = 50
theme_override_constants/margin_bottom = 50
[node name="Buttons" type="GridContainer" parent="Keyboard/MarginContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_constants/h_separation = 25
theme_override_constants/v_separation = 25
columns = 2
[node name="1" type="TextureButton" parent="Keyboard/MarginContainer/Buttons"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
texture_normal = ExtResource("2_lewtn")
texture_pressed = ExtResource("3_6vmwg")
stretch_mode = 5
[node name="2" type="TextureButton" parent="Keyboard/MarginContainer/Buttons"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
texture_normal = ExtResource("4_xtie5")
texture_pressed = ExtResource("5_ckp8y")
stretch_mode = 5
[node name="3" type="TextureButton" parent="Keyboard/MarginContainer/Buttons"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
texture_normal = ExtResource("6_5kh6d")
texture_pressed = ExtResource("7_njqxu")
stretch_mode = 5
[node name="4" type="TextureButton" parent="Keyboard/MarginContainer/Buttons"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
texture_normal = ExtResource("8_70a0u")
texture_pressed = ExtResource("9_ka1mx")
stretch_mode = 5
[node name="5" type="TextureButton" parent="Keyboard/MarginContainer/Buttons"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
texture_normal = ExtResource("10_wnwqh")
texture_pressed = ExtResource("11_ekdax")
stretch_mode = 5
[node name="6" type="TextureButton" parent="Keyboard/MarginContainer/Buttons"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
texture_normal = ExtResource("12_3eke6")
texture_pressed = ExtResource("13_mhbsr")
stretch_mode = 5
[node name="ButtonSoundPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("15_tcy0b")
bus = &"Effects"
+15 -18
View File
@@ -11,6 +11,7 @@ const icons_textures = [
preload("res://assets/menus/login/symbol05.png"), preload("res://assets/menus/login/symbol05.png"),
preload("res://assets/menus/login/symbol06.png") preload("res://assets/menus/login/symbol06.png")
] ]
const button_sound := preload("res://assets/menus/login/ui_play_button.mp3")
const help_speech_path : String = "main_menu/audio/login_screen_help_code.mp3" const help_speech_path : String = "main_menu/audio/login_screen_help_code.mp3"
const wrong_password_speech_path : String = "main_menu/audio/login_screen_feedback_wrong_password.mp3" const wrong_password_speech_path : String = "main_menu/audio/login_screen_feedback_wrong_password.mp3"
const right_password_speech_path : String = "main_menu/audio/login_screen_feedback_right_password.mp3" const right_password_speech_path : String = "main_menu/audio/login_screen_feedback_right_password.mp3"
@@ -18,16 +19,18 @@ const right_password_speech_path : String = "main_menu/audio/login_screen_feedba
@onready var kalulu: Control = $Kalulu @onready var kalulu: Control = $Kalulu
@onready var music_player : AudioStreamPlayer = $MusicStreamPlayer @onready var music_player : AudioStreamPlayer = $MusicStreamPlayer
@onready var buttons: GridContainer = $Buttons @onready var device_number_label := $DeviceNumber
@onready var icons : HBoxContainer = $Icons @onready var icons := [%Icon1, %Icon2, %Icon3]
@onready var keyboard := $CodeKeyboard
@onready var teacher_timer : Timer = $InterfaceRight/TeacherButton/TeacherTimer @onready var teacher_timer : Timer = $InterfaceRight/TeacherButton/TeacherTimer
var password : Array = [] var password : Array = []
func _ready(): func _ready():
# Connect buttons
for button in buttons.get_children(false): if UserDataManager.teacher_settings.type == TeacherSettings.Type.Teacher:
button.connect("pressed", _on_button_pressed.bind(button)) device_number_label.show()
device_number_label.text += str(UserDataManager.device_settings.device_id)
await kalulu.play_kalulu_speech(Database.get_audio_stream_for_path(help_speech_path)) await kalulu.play_kalulu_speech(Database.get_audio_stream_for_path(help_speech_path))
music_player.play() music_player.play()
@@ -35,27 +38,21 @@ func _ready():
func _reset_password(): func _reset_password():
password = [] password = []
for button in buttons.get_children(false):
button.set_modulate(Color(1,1,1))
button.set_disabled(false)
for icon in icons.get_children(false): keyboard.reset_buttons()
for icon in icons:
icon.texture = null icon.texture = null
func _on_button_pressed(button : TextureButton): func _on_code_keyboard_button_pressed(key : String):
var index : int = button.name.to_int() var index : int = key.to_int()
password.append(button.name)
button.set_modulate(Color(0.5,0.5,0.5))
button.set_disabled(true)
password.append(key)
var password_size = password.size() var password_size = password.size()
var test = icons.get_node(str(password_size)) icons[password_size-1].texture = icons_textures[index-1]
test.texture = icons_textures[index-1]
if password_size == 3: if password_size == 3:
_check_password() _check_password()
+69 -115
View File
@@ -1,30 +1,19 @@
[gd_scene load_steps=27 format=3 uid="uid://2wab3q35ssta"] [gd_scene load_steps=16 format=3 uid="uid://2wab3q35ssta"]
[ext_resource type="Texture2D" uid="uid://d3rhl050u0ahl" path="res://assets/menus/login/password_background.png" id="1_mw5cp"]
[ext_resource type="Script" path="res://sources/menus/login/login.gd" id="1_spyuf"] [ext_resource type="Script" path="res://sources/menus/login/login.gd" id="1_spyuf"]
[ext_resource type="PackedScene" uid="uid://wdjp1sv55q4f" path="res://sources/menus/night_sky/night_sky.tscn" id="3_0my6t"] [ext_resource type="PackedScene" uid="uid://wdjp1sv55q4f" path="res://sources/menus/night_sky/night_sky.tscn" id="3_0my6t"]
[ext_resource type="PackedScene" uid="uid://blos4rn53qkwg" path="res://sources/minigames/base/kalulu.tscn" id="3_5b1v0"] [ext_resource type="PackedScene" uid="uid://blos4rn53qkwg" path="res://sources/minigames/base/kalulu.tscn" id="3_5b1v0"]
[ext_resource type="PackedScene" uid="uid://dxc82xcl7jncd" path="res://sources/menus/main/plants/palm.tscn" id="3_yrwu8"] [ext_resource type="PackedScene" uid="uid://dxc82xcl7jncd" path="res://sources/menus/main/plants/palm.tscn" id="3_yrwu8"]
[ext_resource type="Texture2D" uid="uid://wtx3wqs0l4si" path="res://assets/minigames/minigame_ui/graphic/button_back_up.png" id="4_3vuah"] [ext_resource type="Texture2D" uid="uid://wtx3wqs0l4si" path="res://assets/minigames/minigame_ui/graphic/button_back_up.png" id="4_3vuah"]
[ext_resource type="Theme" uid="uid://dqjvrt5nrtwn1" path="res://resources/themes/kalulu_theme.tres" id="5_j0bnd"]
[ext_resource type="Texture2D" uid="uid://cbhip35yyqneg" path="res://assets/minigames/minigame_ui/graphic/button_back_down.png" id="5_vd33f"] [ext_resource type="Texture2D" uid="uid://cbhip35yyqneg" path="res://assets/minigames/minigame_ui/graphic/button_back_down.png" id="5_vd33f"]
[ext_resource type="PackedScene" uid="uid://djduptonofbh4" path="res://sources/menus/code_keyboard.tscn" id="5_xwrca"]
[ext_resource type="Texture2D" uid="uid://tcapan0mj64o" path="res://assets/minigames/minigame_ui/graphic/button_back_disabled.png" id="6_0dhup"] [ext_resource type="Texture2D" uid="uid://tcapan0mj64o" path="res://assets/minigames/minigame_ui/graphic/button_back_disabled.png" id="6_0dhup"]
[ext_resource type="Texture2D" uid="uid://iw84x6mx8h2g" path="res://assets/minigames/minigame_ui/graphic/button_kalulu_up.png" id="7_2wdoi"] [ext_resource type="Texture2D" uid="uid://iw84x6mx8h2g" path="res://assets/minigames/minigame_ui/graphic/button_kalulu_up.png" id="7_2wdoi"]
[ext_resource type="Texture2D" uid="uid://ub1dnysbojn8" path="res://assets/minigames/minigame_ui/graphic/button_kalulu_down.png" id="8_nxlxw"] [ext_resource type="Texture2D" uid="uid://ub1dnysbojn8" path="res://assets/minigames/minigame_ui/graphic/button_kalulu_down.png" id="8_nxlxw"]
[ext_resource type="Texture2D" uid="uid://b4xm8a5y2lf3h" path="res://assets/menus/login/button_teacher_1.png" id="9_7lscf"] [ext_resource type="Texture2D" uid="uid://b4xm8a5y2lf3h" path="res://assets/menus/login/button_teacher_1.png" id="9_7lscf"]
[ext_resource type="Texture2D" uid="uid://crnxawhf68po3" path="res://assets/minigames/minigame_ui/graphic/button_kalulu_disabled.png" id="9_k74e3"] [ext_resource type="Texture2D" uid="uid://crnxawhf68po3" path="res://assets/minigames/minigame_ui/graphic/button_kalulu_disabled.png" id="9_k74e3"]
[ext_resource type="Texture2D" uid="uid://de8087qre3hqd" path="res://assets/menus/login/button_symbol01_up.png" id="10_kigl0"]
[ext_resource type="Texture2D" uid="uid://g2igusggq16s" path="res://assets/menus/login/button_teacher_0.png" id="10_ro1l5"] [ext_resource type="Texture2D" uid="uid://g2igusggq16s" path="res://assets/menus/login/button_teacher_0.png" id="10_ro1l5"]
[ext_resource type="Texture2D" uid="uid://ce2dk2so7yo85" path="res://assets/menus/login/button_symbol01_down.png" id="11_fs1ex"]
[ext_resource type="Texture2D" uid="uid://cq6ctjti7nroe" path="res://assets/menus/login/button_symbol02_up.png" id="12_ygmrs"]
[ext_resource type="Texture2D" uid="uid://cghxguj0vdhx7" path="res://assets/menus/login/button_symbol02_down.png" id="13_ghp6c"]
[ext_resource type="Texture2D" uid="uid://bxrtewrqlop6h" path="res://assets/menus/login/button_symbol03_up.png" id="14_ap24d"]
[ext_resource type="Texture2D" uid="uid://da7g76llxx8t5" path="res://assets/menus/login/button_symbol03_down.png" id="15_wh2p6"]
[ext_resource type="Texture2D" uid="uid://bh7toiwhvln0v" path="res://assets/menus/login/button_symbol04_up.png" id="16_5ip8d"]
[ext_resource type="Texture2D" uid="uid://c6od4ikuean3f" path="res://assets/menus/login/button_symbol04_down.png" id="17_876tw"]
[ext_resource type="Texture2D" uid="uid://d18rbiborhmow" path="res://assets/menus/login/button_symbol05_up.png" id="18_6ncp7"]
[ext_resource type="Texture2D" uid="uid://ch87nxu2c0vf8" path="res://assets/menus/login/button_symbol05_down.png" id="19_ty7yo"]
[ext_resource type="Texture2D" uid="uid://eg5jrfombxb8" path="res://assets/menus/login/button_symbol06_up.png" id="20_xaifc"]
[ext_resource type="Texture2D" uid="uid://dce53jiyk6gy6" path="res://assets/menus/login/button_symbol06_down.png" id="21_banah"]
[ext_resource type="AudioStream" uid="uid://b85wy2h7fmvvf" path="res://assets/menus/login/intro_title_card.mp3" id="24_4xfja"] [ext_resource type="AudioStream" uid="uid://b85wy2h7fmvvf" path="res://assets/menus/login/intro_title_card.mp3" id="24_4xfja"]
[node name="Login" type="Control"] [node name="Login" type="Control"]
@@ -43,14 +32,74 @@ layout_mode = 1
position = Vector2(1280, 1800) position = Vector2(1280, 1800)
scale = Vector2(2.5, 2.5) scale = Vector2(2.5, 2.5)
[node name="Background" type="TextureRect" parent="."] [node name="DeviceNumber" type="Label" parent="."]
visible = false
layout_mode = 1 layout_mode = 1
anchors_preset = 15 anchors_preset = 5
anchor_right = 1.0 anchor_left = 0.5
anchor_bottom = 1.0 anchor_right = 0.5
offset_left = -158.5
offset_top = 100.0
offset_right = 158.5
offset_bottom = 176.0
grow_horizontal = 2
text = "DEVICE n°"
[node name="Icons" type="HBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -676.0
offset_top = -565.0
offset_right = 676.0
offset_bottom = -145.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
texture = ExtResource("1_mw5cp") theme_override_constants/separation = 46
[node name="Panel1" type="PanelContainer" parent="Icons"]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("5_j0bnd")
metadata/_edit_use_anchors_ = true
[node name="Icon1" type="TextureRect" parent="Icons/Panel1"]
unique_name_in_owner = true
custom_minimum_size = Vector2(420, 420)
layout_mode = 2
stretch_mode = 4
[node name="Panel2" type="PanelContainer" parent="Icons"]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("5_j0bnd")
metadata/_edit_use_anchors_ = true
[node name="Icon2" type="TextureRect" parent="Icons/Panel2"]
unique_name_in_owner = true
custom_minimum_size = Vector2(420, 420)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
[node name="Panel3" type="PanelContainer" parent="Icons"]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("5_j0bnd")
metadata/_edit_use_anchors_ = true
[node name="Icon3" type="TextureRect" parent="Icons/Panel3"]
unique_name_in_owner = true
custom_minimum_size = Vector2(420, 420)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
[node name="CodeKeyboard" parent="." instance=ExtResource("5_xwrca")]
layout_mode = 1
[node name="InterfaceLeft" type="MarginContainer" parent="."] [node name="InterfaceLeft" type="MarginContainer" parent="."]
custom_minimum_size = Vector2(450, 0) custom_minimum_size = Vector2(450, 0)
@@ -109,102 +158,6 @@ stretch_mode = 5
[node name="TeacherTimer" type="Timer" parent="InterfaceRight/TeacherButton"] [node name="TeacherTimer" type="Timer" parent="InterfaceRight/TeacherButton"]
wait_time = 5.0 wait_time = 5.0
[node name="Icons" type="HBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -676.0
offset_top = -565.0
offset_right = 676.0
offset_bottom = -145.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 46
[node name="1" type="TextureRect" parent="Icons"]
custom_minimum_size = Vector2(420, 420)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
stretch_mode = 5
[node name="2" type="TextureRect" parent="Icons"]
custom_minimum_size = Vector2(420, 420)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
[node name="3" type="TextureRect" parent="Icons"]
custom_minimum_size = Vector2(420, 420)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
[node name="Buttons" type="GridContainer" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.203125
anchor_top = 0.573333
anchor_right = 0.796875
anchor_bottom = 0.96
grow_horizontal = 2
grow_vertical = 0
theme_override_constants/h_separation = 25
theme_override_constants/v_separation = 25
columns = 2
metadata/_edit_use_anchors_ = true
[node name="1" type="TextureButton" parent="Buttons"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
texture_normal = ExtResource("10_kigl0")
texture_pressed = ExtResource("11_fs1ex")
stretch_mode = 5
[node name="2" type="TextureButton" parent="Buttons"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
texture_normal = ExtResource("12_ygmrs")
texture_pressed = ExtResource("13_ghp6c")
stretch_mode = 5
[node name="3" type="TextureButton" parent="Buttons"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
texture_normal = ExtResource("14_ap24d")
texture_pressed = ExtResource("15_wh2p6")
stretch_mode = 5
[node name="4" type="TextureButton" parent="Buttons"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
texture_normal = ExtResource("16_5ip8d")
texture_pressed = ExtResource("17_876tw")
stretch_mode = 5
[node name="5" type="TextureButton" parent="Buttons"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
texture_normal = ExtResource("18_6ncp7")
texture_pressed = ExtResource("19_ty7yo")
stretch_mode = 5
[node name="6" type="TextureButton" parent="Buttons"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
texture_normal = ExtResource("20_xaifc")
texture_pressed = ExtResource("21_banah")
stretch_mode = 5
[node name="Kalulu" parent="." instance=ExtResource("3_5b1v0")] [node name="Kalulu" parent="." instance=ExtResource("3_5b1v0")]
visible = false visible = false
layout_mode = 1 layout_mode = 1
@@ -212,6 +165,7 @@ layout_mode = 1
[node name="MusicStreamPlayer" type="AudioStreamPlayer" parent="."] [node name="MusicStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("24_4xfja") stream = ExtResource("24_4xfja")
[connection signal="button_pressed" from="CodeKeyboard" to="." method="_on_code_keyboard_button_pressed"]
[connection signal="pressed" from="InterfaceLeft/Container/BackButton" to="." method="_on_back_button_pressed"] [connection signal="pressed" from="InterfaceLeft/Container/BackButton" to="." method="_on_back_button_pressed"]
[connection signal="pressed" from="InterfaceLeft/Container/KaluluButton" to="." method="_on_kalulu_button_pressed"] [connection signal="pressed" from="InterfaceLeft/Container/KaluluButton" to="." method="_on_kalulu_button_pressed"]
[connection signal="button_down" from="InterfaceRight/TeacherButton" to="." method="_on_teacher_button_button_down"] [connection signal="button_down" from="InterfaceRight/TeacherButton" to="." method="_on_teacher_button_button_down"]