103 lines
3.1 KiB
GDScript
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)
|