Handles login and device settings
This commit is contained in:
@@ -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 = ""
|
||||
@@ -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"
|
||||
@@ -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)
|
||||
|
||||
@@ -29,6 +29,7 @@ var current_image_and_sound: = 0
|
||||
var images: = []
|
||||
var sounds: = []
|
||||
|
||||
|
||||
var current_tracing: = 0
|
||||
|
||||
|
||||
|
||||
@@ -18,6 +18,9 @@ func _ready():
|
||||
|
||||
|
||||
func _process(delta):
|
||||
if not visible:
|
||||
return
|
||||
|
||||
if not isSpeaking:
|
||||
elapsedTime += delta
|
||||
if elapsedTime > 20:
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user