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;