From d3bbd1db8c33792926016c8358fa06fc81fab680 Mon Sep 17 00:00:00 2001
From: David espinosa <104380606+davespser@users.noreply.github.com>
Date: Fri, 6 Dec 2024 16:48:28 +0100
Subject: [PATCH] Update index.html
---
index.html | 155 +++++++++++++++++++++++++++++++++++++++++------------
1 file changed, 122 insertions(+), 33 deletions(-)
diff --git a/index.html b/index.html
index 801016ad..213a1920 100644
--- a/index.html
+++ b/index.html
@@ -1,33 +1,122 @@
-
-
-
-
-
- Firebase + Three.js
-
-
-
-
-
- Firebase + Three.js
-
- Registro
-
-
-
-
- Inicio de Sesión
-
-
-
-
- Sesión Activa
-
-
-
-
-
-
-
-
-
+// Importa las funciones necesarias
+import { auth, database } from "./firebase-config.js";
+import {
+ createUserWithEmailAndPassword,
+ signInWithEmailAndPassword,
+ onAuthStateChanged,
+ signOut
+} from "https://www.gstatic.com/firebasejs/9.21.0/firebase-auth.js";
+import {
+ ref,
+ get,
+ set
+} from "https://www.gstatic.com/firebasejs/9.21.0/firebase-database.js";
+import { loadThreeScene, unloadThreeScene } from "./three-scene.js";
+import { loadCharacterCreator } from "./characterCreator.js";
+
+// Registro de usuario
+function handleRegister() {
+ const email = document.getElementById("register-email").value;
+ const password = document.getElementById("register-password").value;
+
+ createUserWithEmailAndPassword(auth, email, password)
+ .then((userCredential) => {
+ const user = userCredential.user;
+ console.log("Usuario registrado:", user);
+
+ // Guardar datos iniciales del usuario en la base de datos
+ const initialData = {
+ level: 1,
+ position: { x: 0, y: 0, z: 0 },
+ characterCreated: false // Flag para verificar si completó el cuestionario
+ };
+ saveUserData(user.uid, initialData);
+ })
+ .catch((error) => {
+ console.error("Error al registrar usuario:", error.message);
+ });
+}
+
+// Inicio de sesión
+function handleLogin() {
+ const email = document.getElementById("login-email").value;
+ const password = document.getElementById("login-password").value;
+
+ signInWithEmailAndPassword(auth, email, password)
+ .then((userCredential) => {
+ console.log("Usuario inició sesión:", userCredential.user);
+ })
+ .catch((error) => {
+ console.error("Error al iniciar sesión:", error.message);
+ });
+}
+
+// Cerrar sesión
+function handleLogout() {
+ signOut(auth)
+ .then(() => {
+ console.log("Usuario desconectado");
+ unloadThreeScene(); // Desmontar la escena si el usuario cierra sesión
+ })
+ .catch((error) => {
+ console.error("Error al cerrar sesión:", error.message);
+ });
+}
+
+// Guardar datos en la base de datos
+function saveUserData(userId, data) {
+ set(ref(database, `players/${userId}`), data)
+ .then(() => {
+ console.log("Datos del usuario guardados correctamente.");
+ })
+ .catch((error) => {
+ console.error("Error al guardar los datos del usuario:", error.message);
+ });
+}
+
+// Cargar datos del usuario desde la base de datos
+function loadUserData(userId) {
+ get(ref(database, `players/${userId}`))
+ .then((snapshot) => {
+ if (snapshot.exists()) {
+ const userData = snapshot.val();
+ console.log("Datos del usuario cargados:", userData);
+
+ // Verificar si ya completó el cuestionario de creación de personaje
+ if (!userData.characterCreated) {
+ console.log("Cargando creador de personaje...");
+ loadCharacterCreator(userId);
+ } else {
+ console.log("Cargando escena principal...");
+ loadThreeScene({
+ ...userData.position,
+ color: userData.color,
+ stats: userData.derivedStats // Usar las estadísticas calculadas previamente
+ });
+ }
+ } else {
+ console.log("No se encontraron datos para este usuario.");
+ }
+ })
+ .catch((error) => {
+ console.error("Error al cargar los datos del usuario:", error.message);
+ });
+}
+
+// Escuchar el estado de autenticación
+onAuthStateChanged(auth, (user) => {
+ if (user) {
+ console.log("Sesión activa con usuario:", user);
+
+ // Cargar datos del usuario e iniciar la escena o el creador de personajes
+ loadUserData(user.uid);
+ } else {
+ console.log("No hay ningún usuario conectado.");
+ unloadThreeScene(); // Desmontar la escena si no hay usuario
+ }
+});
+
+// Exportar funciones para usarlas en el HTML
+window.handleRegister = handleRegister;
+window.handleLogin = handleLogin;
+window.handleLogout = handleLogout;