AppResidencia/empareja-las-sombras/scripts/configuration.gd

103 lines
3.1 KiB
GDScript

extends Control
@onready var login_popup = $LogIn
@onready var email_input = $LogIn/VBoxContainer/EmailInput
@onready var password_input = $LogIn/VBoxContainer/PasswordInput
@onready var login_button = $LogIn/VBoxContainer/LogInButton
@onready var levels_menu = $MarginContainer/VBoxContainer/levels_menu
@onready var residents_menu = $MarginContainer/VBoxContainer/residents_menu
var level = -1
var id_player = -1
var id_user = -1
func _ready():
RenderingServer.set_default_clear_color("#CCCCCC")
await get_tree().process_frame # Esperar a que todo esté listo
if not GameData.is_logged_in:
login_popup.show()
$Blocker.visible = true
levels_menu.get_popup().connect("id_pressed", self._on_level_selected)
var residents = await GameData.get_residents_loaded()
if residents_menu.item_count < residents.size():
for resident in residents:
var full_name = "%s %s" % [resident.nombre, resident.apellido]
var id = int(resident.id)
residents_menu.get_popup().add_item(full_name, id)
residents_menu.get_popup().connect("id_pressed", self._on_player_selected)
### Metodo para cuando se pulse el boton de iniciar sesion
func _on_log_in_button_pressed():
var users = await GameData.get_users_loaded()
var username = email_input.text.strip_edges()
var password = password_input.text.strip_edges()
for user in users:
if user.email == username or not user.is_empty():
GameData.is_logged_in = true
id_user = int(user.id)
login_popup.hide()
$Blocker.visible = false
break
if not GameData.is_logged_in:
email_input.clear()
password_input.clear()
var stylebox_email = email_input.get_theme_stylebox("normal") as StyleBoxFlat
var stylebox_password = password_input.get_theme_stylebox("normal") as StyleBoxFlat
if stylebox_email and stylebox_password:
stylebox_email.bg_color = Color(1, 0.8, 0.8)
stylebox_password.bg_color = Color(1, 0.8, 0.8)
### Metodo para cuando el usuario elija el nivel en el menu
func _on_level_selected(id):
match id:
0:
level = 0
1:
level = 1
2:
level = 2
### Metodo para cuando el usuario elija el jugador en el menu
func _on_player_selected(id):
id_player = id
### Metodo para cuando el usuario le de al boton de jugar
func _on_button_pressed() -> void:
var bg_color = $MarginContainer/VBoxContainer/bg_color_picker.color
var tiles_lines_color = $MarginContainer/VBoxContainer/tiles_lines_color_picker.color
var table_lines_color = $MarginContainer/VBoxContainer/table_lines_color_picker.color
var warning = Label.new()
warning.text = ""
warning.add_theme_color_override("font_color","#324f5e")
if level == -1:
warning.text = " - Debes seleccionar un nivel\n"
if id_player == -1:
warning.text += " - Debes seleccionar un jugador"
if warning.text != "":
$Warning/Panel.add_child(warning)
$Warning.popup_centered(Vector2(400, 200))
return
var game_scene = preload("res://scenes/Game.tscn").instantiate()
game_scene.bg_color = bg_color
game_scene.tiles_lines_color = tiles_lines_color
game_scene.table_lines_color = table_lines_color
game_scene.difficulty = level
GameData.start_game(id_player, id_user, level)
ScreenManager.change_scene(game_scene, self)