diff --git a/assets/menus/login/password_background.png b/assets/menus/login/password_background.png index d5e12c28..9ca966a6 100644 Binary files a/assets/menus/login/password_background.png and b/assets/menus/login/password_background.png differ diff --git a/assets/menus/login/ui_play_button.mp3 b/assets/menus/login/ui_play_button.mp3 new file mode 100644 index 00000000..8287ec7a Binary files /dev/null and b/assets/menus/login/ui_play_button.mp3 differ diff --git a/assets/menus/login/ui_play_button.mp3.import b/assets/menus/login/ui_play_button.mp3.import new file mode 100644 index 00000000..62b6715d --- /dev/null +++ b/assets/menus/login/ui_play_button.mp3.import @@ -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 diff --git a/resources/themes/kalulu_theme.tres b/resources/themes/kalulu_theme.tres index e03d1735..cc11206a 100644 --- a/resources/themes/kalulu_theme.tres +++ b/resources/themes/kalulu_theme.tres @@ -18,9 +18,17 @@ border_width_bottom = 2 border_color = Color(0, 0, 0, 1) [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3gh3j"] -bg_color = Color(0.376471, 0.470588, 0.780392, 1) -border_width_bottom = 2 -border_color = Color(0, 0, 0, 1) +bg_color = Color(0.133333, 0.133333, 0.188235, 0.698039) +border_width_left = 10 +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] AcceptDialog/styles/panel = SubResource("StyleBoxFlat_nikxc") diff --git a/sources/menus/code_keyboard.gd b/sources/menus/code_keyboard.gd new file mode 100644 index 00000000..4d7bd7b9 --- /dev/null +++ b/sources/menus/code_keyboard.gd @@ -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) diff --git a/sources/menus/code_keyboard.tscn b/sources/menus/code_keyboard.tscn new file mode 100644 index 00000000..86eea3c0 --- /dev/null +++ b/sources/menus/code_keyboard.tscn @@ -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" diff --git a/sources/menus/login/login.gd b/sources/menus/login/login.gd index 9770c13b..9e8cc093 100644 --- a/sources/menus/login/login.gd +++ b/sources/menus/login/login.gd @@ -11,6 +11,7 @@ const icons_textures = [ preload("res://assets/menus/login/symbol05.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 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" @@ -18,16 +19,18 @@ const right_password_speech_path : String = "main_menu/audio/login_screen_feedba @onready var kalulu: Control = $Kalulu @onready var music_player : AudioStreamPlayer = $MusicStreamPlayer -@onready var buttons: GridContainer = $Buttons -@onready var icons : HBoxContainer = $Icons +@onready var device_number_label := $DeviceNumber +@onready var icons := [%Icon1, %Icon2, %Icon3] +@onready var keyboard := $CodeKeyboard @onready var teacher_timer : Timer = $InterfaceRight/TeacherButton/TeacherTimer var password : Array = [] func _ready(): - # Connect buttons - for button in buttons.get_children(false): - button.connect("pressed", _on_button_pressed.bind(button)) + + if UserDataManager.teacher_settings.type == TeacherSettings.Type.Teacher: + 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)) music_player.play() @@ -35,27 +38,21 @@ func _ready(): func _reset_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 -func _on_button_pressed(button : TextureButton): +func _on_code_keyboard_button_pressed(key : String): - var index : int = button.name.to_int() - - password.append(button.name) - - button.set_modulate(Color(0.5,0.5,0.5)) - button.set_disabled(true) + var index : int = key.to_int() + password.append(key) var password_size = password.size() - var test = icons.get_node(str(password_size)) - test.texture = icons_textures[index-1] + icons[password_size-1].texture = icons_textures[index-1] if password_size == 3: _check_password() diff --git a/sources/menus/login/login.tscn b/sources/menus/login/login.tscn index 99a42d4a..43cc1471 100644 --- a/sources/menus/login/login.tscn +++ b/sources/menus/login/login.tscn @@ -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="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://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="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="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://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://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://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://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"] [node name="Login" type="Control"] @@ -43,14 +32,74 @@ layout_mode = 1 position = Vector2(1280, 1800) scale = Vector2(2.5, 2.5) -[node name="Background" type="TextureRect" parent="."] +[node name="DeviceNumber" type="Label" parent="."] +visible = false layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 +anchors_preset = 5 +anchor_left = 0.5 +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_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="."] custom_minimum_size = Vector2(450, 0) @@ -109,102 +158,6 @@ stretch_mode = 5 [node name="TeacherTimer" type="Timer" parent="InterfaceRight/TeacherButton"] 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")] visible = false layout_mode = 1 @@ -212,6 +165,7 @@ layout_mode = 1 [node name="MusicStreamPlayer" type="AudioStreamPlayer" parent="."] 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/KaluluButton" to="." method="_on_kalulu_button_pressed"] [connection signal="button_down" from="InterfaceRight/TeacherButton" to="." method="_on_teacher_button_button_down"]