Handles login and device settings

This commit is contained in:
Dylan Sarrazyn
2024-01-18 14:02:02 +01:00
parent 67bffff2bd
commit 0758d6f0fa
10 changed files with 102 additions and 67 deletions
+29
View File
@@ -0,0 +1,29 @@
extends Resource
class_name DeviceSettings
@export var language : String :
set(value):
language = value
Database.language = value
TranslationServer.set_locale(value)
@export var teacher : String
@export var device_id : String
# List of current known logins for teachers
const possible_logins: = {
"kalulu" : "kalulu",
}
func _init():
# Gets the OS language and Checks if it is supported
var osLanguage = OS.get_locale_language();
if osLanguage and osLanguage in DirAccess.open("res://language_resources").get_directories():
language = osLanguage
if not language:
language = "fr"
teacher = ""
device_id = ""
-17
View File
@@ -1,17 +0,0 @@
extends Resource
class_name LanguageSettings
@export var language : String :
set(value):
language = value
Database.language = value
@export var teacher : String
@export var device_id : String
func _init():
var osLanguage = OS.get_locale_language();
if osLanguage:
language = osLanguage
else:
language = "fr"
+5 -8
View File
@@ -1,7 +1,7 @@
[gd_resource type="Theme" load_steps=9 format=3 uid="uid://dqjvrt5nrtwn1"]
[gd_resource type="Theme" load_steps=10 format=3 uid="uid://dqjvrt5nrtwn1"]
[ext_resource type="FontFile" uid="uid://b74ghiuvt8u45" path="res://assets/fonts/ScriptEcoleNormal.otf" id="1_shpmh"]
[ext_resource type="Texture2D" uid="uid://2pldpmhcg6v4" path="res://assets/theme/previous.svg" id="1_mdn6k"]
[ext_resource type="FontFile" uid="uid://b74ghiuvt8u45" path="res://assets/fonts/ScriptEcoleNormal.otf" id="1_shpmh"]
[ext_resource type="Texture2D" uid="uid://c156h72ld8d4s" path="res://assets/theme/next.svg" id="2_hbp6q"]
[ext_resource type="Texture2D" uid="uid://cacy10k45kq6u" path="res://assets/theme/up.svg" id="3_1nwm4"]
[ext_resource type="Texture2D" uid="uid://b7fqrj816kdjg" path="res://assets/theme/refresh.svg" id="4_ymfot"]
@@ -39,18 +39,15 @@ LineEdit/constants/caret_width = 4
LineEdit/constants/outline_size = 1
LineEdit/font_sizes/font_size = 32
LineEdit/fonts/font = ExtResource("1_shpmh")
MenuBar/font_sizes/font_size = 32
MenuButton/font_sizes/font_size = 32
OptionButton/colors/font_color = Color(1, 1, 1, 1)
OptionButton/colors/font_outline_color = Color(0, 0, 0, 1)
OptionButton/constants/arrow_margin = 20
OptionButton/constants/modulate_arrow = 1
OptionButton/constants/outline_size = 1
OptionButton/font_sizes/font_size = 70
OptionButton/fonts/font = ExtResource("1_shpmh")
Panel/styles/panel = SubResource("StyleBoxFlat_sfncn")
PanelContainer/styles/panel = SubResource("StyleBoxFlat_3gh3j")
MenuBar/font_sizes/font_size = 32
MenuButton/font_sizes/font_size = 32
OptionButton/font_sizes/font_size = 32
OptionButton/fonts/font = ExtResource("1_shpmh")
Panel/styles/panel = SubResource("StyleBoxFlat_sfncn")
PanelContainer/styles/panel = SubResource("StyleBoxFlat_3gh3j")
PopupMenu/colors/font_color = Color(1, 1, 1, 1)
+1
View File
@@ -29,6 +29,7 @@ var current_image_and_sound: = 0
var images: = []
var sounds: = []
var current_tracing: = 0
+3
View File
@@ -18,6 +18,9 @@ func _ready():
func _process(delta):
if not visible:
return
if not isSpeaking:
elapsedTime += delta
if elapsedTime > 20:
+1 -1
View File
@@ -9,7 +9,7 @@ func _ready():
for language_locale in dir.get_directories():
add_item(TranslationServer.get_locale_name(language_locale), idx)
items.append(language_locale)
if language_locale == UserDataManager.language_settings.language:
if language_locale == UserDataManager.device_settings.language:
select(idx)
idx+=1
+16 -8
View File
@@ -1,5 +1,7 @@
extends Control
const next_scene_path: = "res://sources/menus/minigame_selection.tscn"
@onready var music_player : AudioStreamPlayer = $MusicStreamPlayer
@onready var version_label : Label = $Informations/BuildVersionValue
@onready var teacher_label : Label = $Informations/TeacherValue
@@ -10,23 +12,29 @@ extends Control
func _ready():
version_label.text = ProjectSettings.get_setting("application/config/version")
teacher_label.text = UserDataManager.language_settings.teacher
device_id_label.text = UserDataManager.language_settings.device_id
teacher_label.text = UserDataManager.device_settings.teacher
device_id_label.text = UserDataManager.device_settings.device_id
func _on_main_button_pressed():
if kalulu.visible:
if UserDataManager.device_settings.teacher:
get_tree().change_scene_to_file(next_scene_path)
else:
kalulu.visible = false
kalulu.stop_speech()
login.visible = true
func _on_music_stream_player_finished():
music_player.stream_paused = false
music_player.play()
func _on_back_button_pressed():
login.visible = false
kalulu.visible = true
kalulu.start_speech()
func _on_login_in():
get_tree().change_scene_to_file(next_scene_path)
func _on_music_stream_player_finished():
music_player.stream_paused = false
music_player.play()
+17 -4
View File
@@ -111,7 +111,7 @@ blend_mode = 2
range_item_cull_mask = 2
texture = ExtResource("20_oqrk5")
[node name="Button" type="Button" parent="Kalulu"]
[node name="PlayButton" type="Button" parent="Kalulu"]
modulate = Color(1, 1, 1, 0)
self_modulate = Color(1, 1, 1, 0)
layout_mode = 1
@@ -227,7 +227,7 @@ texture_normal = ExtResource("12_km7h0")
texture_pressed = ExtResource("13_oqjai")
texture_disabled = ExtResource("14_11c6x")
[node name="ErrorMessage" type="Label" parent="Login"]
[node name="FieldMissingError" type="Label" parent="Login"]
visible = false
layout_mode = 1
anchors_preset = 12
@@ -237,7 +237,19 @@ anchor_bottom = 1.0
offset_top = -76.0
grow_horizontal = 2
grow_vertical = 0
text = "Please verify your data"
text = "Please fill all the fields"
[node name="LoginError" type="Label" parent="Login"]
visible = false
layout_mode = 1
anchors_preset = 12
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = -76.0
grow_horizontal = 2
grow_vertical = 0
text = "Invalid username or password"
[node name="Informations" type="Control" parent="."]
layout_mode = 1
@@ -315,7 +327,8 @@ vertical_alignment = 1
stream = ExtResource("23_ajpnn")
autoplay = true
[connection signal="pressed" from="Kalulu/Button" to="." method="_on_main_button_pressed"]
[connection signal="pressed" from="Kalulu/PlayButton" to="." method="_on_main_button_pressed"]
[connection signal="logged_in" from="Login" to="." method="_on_login_in"]
[connection signal="pressed" from="Login/BackButton" to="." method="_on_back_button_pressed"]
[connection signal="pressed" from="Login/ValidateButton" to="Login" method="_on_validate_button_pressed"]
[connection signal="finished" from="MusicStreamPlayer" to="." method="_on_music_stream_player_finished"]
+1 -1
View File
@@ -35,7 +35,7 @@ var words_path: = base_path + language + "/words/"
func _ready() -> void:
language = UserDataManager.language_settings.language
language = UserDataManager.device_settings.language
db.path = db_path
db.foreign_keys = true
db.open_db()
+29 -28
View File
@@ -2,11 +2,6 @@
extends Node
var teacher: String = "" :
set(teacher_name):
student = ""
var student: String = "" :
set(student_name):
student = student_name
@@ -18,50 +13,56 @@ var student: String = "" :
else :
student_settings = null
var language_settings: LanguageSettings
var device_settings: DeviceSettings
var student_settings: UserSettings
var student_progression: UserProgression
func _ready():
teacher = "toto"
student = "titi"
load_device_settings()
load_student_settings()
load_student_progression()
student_progression.unlocks_changed.connect(_on_user_progression_unlocks_changed)
load_language_settings()
func load_language_settings() -> void:
if FileAccess.file_exists(get_language_settings_path()):
language_settings = load(get_language_settings_path())
if not language_settings:
language_settings = LanguageSettings.new()
_save_language_settings()
func load_device_settings() -> void:
if FileAccess.file_exists(get_device_settings_path()):
device_settings = load(get_device_settings_path())
if not device_settings:
device_settings = DeviceSettings.new()
_save_device_settings()
func _save_language_settings() -> void:
ResourceSaver.save(language_settings, get_language_settings_path())
func _save_device_settings() -> void:
ResourceSaver.save(device_settings, get_device_settings_path())
func get_language_settings_path() -> String:
return "user://language.tres"
func get_device_settings_path() -> String:
return "user://device_settings.tres"
func set_language(language : String) -> void:
if language_settings:
language_settings.language = language
_save_language_settings()
if device_settings:
device_settings.language = language
_save_device_settings()
func login(language : String, teacher : String, device_id : String) -> void:
if language_settings:
language_settings.language = language
language_settings.teacher = teacher
language_settings.device_id = device_id
_save_language_settings()
func login(language : String, teacher : String, password : String, device_id : String) -> bool:
if teacher not in DeviceSettings.possible_logins or password != DeviceSettings.possible_logins[teacher]:
return false
if device_settings:
device_settings.language = language
device_settings.teacher = teacher
device_settings.device_id = device_id
_save_device_settings()
return true
return false
func load_student_settings() -> void:
@@ -94,7 +95,7 @@ func _save_student_progression() -> void:
func get_teacher_folder() -> String:
var file_path: = "user://" + teacher + "/"
var file_path: = "user://" + device_settings.teacher + "/"
return file_path