//Este metodo envia los datos del jugador/personaje al servidor para ser almacenados. Si esta todo correcto, te devuelve al menu. IEnumerator enviarJugador() { loadingLogIn.SetActive(true); carga.json = jugador.getAsJSON(); Debug.Log(carga.json); sender.send(carga.getAsJSON()); yield return(new WaitForSeconds(Seconds)); try { carga = Carga.getFromJSON(str); } catch (Exception ex) { Debug.Log(ex); } if (carga.json.Equals("denied")) { loadingLogIn.SetActive(false); } else { loadingLogIn.SetActive(false); botonPersonajeTexto.text = jugador.Nombre; menu.SetActive(true); crearPersonajes.SetActive(false); } }
//Metodo Courutine el cual manda al servidor una peticion de borrar un personaje y la informacion de este, si todo va bien el personaje se elimina tanto del servidor como del local. IEnumerator borrarJugador() { loadingLogIn.SetActive(true); carga.peticion = "deleteCharacter"; carga.json = perfilData.Jugadores[0].getAsJSON(); Debug.Log(carga.json); sender.send(carga.getAsJSON()); yield return(new WaitForSeconds(Seconds)); try { carga = Carga.getFromJSON(str); } catch (Exception ex) { Debug.Log(ex); } if (carga.json.Equals("denied")) { loadingLogIn.SetActive(false); } else { loadingLogIn.SetActive(false); menu.SetActive(true); botonPersonajeTexto.text = "Vacio"; personaje = null; personaje = new Personaje(); crearPersonajes.SetActive(false); } }
//Manda al servidor un objeto carga con la informacion de la campaña. Espera a la respuesta del servidor y si es satisfactoria te devuelve al menu. Si no es satisfactoria desaparece la pantalla de carga. IEnumerator enviarCampaña() { loadingLogIn.SetActive(true); carga.peticion = "createCampaña"; carga.json = @"" + campaña.getAsJSON() + ""; Debug.Log(carga.json); sender.send(carga.getAsJSON()); yield return(new WaitForSeconds(Seconds)); carga = Carga.getFromJSON(str); if (!carga.json.Equals("accepted")) { loadingLogIn.SetActive(false); } else { loadingLogIn.SetActive(false); crearCampaña.SetActive(false); botonCampañaTexto.text = campaña.Nombre; menu.SetActive(true); perfilData.Campañas.Add(campaña); } }
//Metodo Courutine, Este metodo inicia la conexion con la campaña. Si esta todo correcto activa la UI de la campaña. IEnumerator joinCampaña() { loadingLogIn.SetActive(true); carga.peticion = "joinCampaña"; carga.json = perfilData.Campañas[0].getAsJSON(); Debug.Log(carga.json); sender.send(carga.getAsJSON()); yield return(new WaitForSeconds(Seconds)); carga = Carga.getFromJSON(str); if (carga.assigned.Equals("false") || carga.json.Equals("denied")) { loadingLogIn.SetActive(false); } else { campaña = Campaña.getFromJson(carga.json); campañaData = CampañaData.getFromJson(campaña.CampañaJSON); loadingLogIn.SetActive(false); menu.SetActive(false); UICampaña.SetActive(true); } }
// Metodo Courutine, este metodo modifica el objeto perfil y mediante el objeto carga lo envia al servidor. Espera a que el servidor le responda si se han producido los cambios o no. IEnumerator ModificarPerfil() { loadingLogIn.SetActive(true); perfil.Nombre = cambioNombre.text; /*Texture2D texture = (Texture2D)image.texture; * byte[] bytes; * bytes = texture.EncodeToPNG(); * perfilData.Avatar = Convert.ToBase64String(bytes); (Esto esta comentado debido a que no nos ha dado tiempo a terminar de implementarlo y da errores, vasicamente, convierte una imagen en un string.) */ perfil.PerfilJSON = perfilData.getAsJSON(); carga.peticion = "updateProfile"; carga.json = @"" + perfil.getAsJSON() + ""; sender.send(carga.getAsJSON()); yield return(new WaitForSeconds(Seconds)); carga = Carga.getFromJSON(str); if (!carga.json.Equals("accepted")) { loadingLogIn.SetActive(false); } else { loadingLogIn.SetActive(false); ajustes.SetActive(false); menu.SetActive(true); userNameMenu.text = perfil.Nombre; } }
// metodo IEnumerator, obtiene los datos del registro de la interfaz y los monta dentro del objeto perfil. Despues los envia al servidor el cual responde si se ha aceptado el registro o no. IEnumerator Register() { loadingLogIn.SetActive(true); perfil.Nombre = UsuarioRegistro.text; perfil.Contraseña = PassRegistro.text; perfil.Correo = CorreoRegistro.text; carga.peticion = "makeRegister"; carga.json = @"" + perfil.getAsJSON() + ""; sender.send(carga.getAsJSON()); yield return(new WaitForSeconds(Seconds)); carga = Carga.getFromJSON(str); if (!carga.json.Equals("accepted")) { loadingLogIn.SetActive(false); } else { loadingLogIn.SetActive(false); UIRegistro.SetActive(false); UILogin.SetActive(true); userNameMenu.text = perfil.Nombre; } }
//Metodo para procesar la informacion que se recive del servidor conrinuamente, como las notificaciones, el chat, o el movimiento de los token segun la peticion recivida del servidor public void ProcessData() { if (!String.Equals(str, "accede")) { Carga Aux = new Carga(); Aux = Carga.getFromJSON(str); if (String.Equals(Aux.peticion, "chatMessage")) { Text nuevoTexto = GameObject.Instantiate(Message); nuevoTexto.transform.parent = chatBoxContent.transform; mensaje = Mensaje.getFromJson(Aux.json); nuevoTexto.text = mensaje.Emisor + ": " + mensaje.Messaje; str = "accede"; } if (String.Equals(Aux.peticion, "sendNotificacion")) { mensaje = Mensaje.getFromJson(Aux.json); if (String.Equals(mensaje.Receptor, perfil.Nombre)) { perfilData.Campañas.Add(Campaña.getFromJson(mensaje.Messaje)); botonCampañaTexto.text = perfilData.Campañas[0].Nombre; } str = "accede"; } if (String.Equals(Aux.peticion, "tokenMove")) { Token fichaAux = Token.getFromJson(Aux.json); invocarToken(fichaAux); str = "accede"; } if (String.Equals(Aux.peticion, "leaveCampaña")) { if (String.Equals(Aux.json, "kick")) { carga.assigned = "false"; GameObject[] fichas = GameObject.FindGameObjectsWithTag("Token"); foreach (GameObject ficha in fichas) { Destroy(ficha); } menu.SetActive(true); UICampaña.SetActive(false); str = "accede"; } else { Perfil aux = Perfil.getFromJson(Aux.json); Destroy(GameObject.Find(aux.Nombre)); str = "accede"; } } } }
/* * metodo IEnumerator, obtiene los datos del login de la interfaz y los monta dentro del objeto perfil. Despues los envia al servidor y espera a la respuesta de si le permite logearse o no. Si le deja * el metodo tambien administra toda la informacion recibida insertandola en los objetos correspondientes */ IEnumerator logIn() { loadingLogIn.SetActive(true); perfil.Nombre = UsuarioLogin.text; perfil.Correo = null; perfil.Contraseña = PassLogin.text; carga.peticion = "makeConnection"; carga.json = @"" + perfil.getAsJSON() + ""; sender.send(carga.getAsJSON()); yield return(new WaitForSeconds(Seconds)); carga = Carga.getFromJSON(str); if (string.IsNullOrEmpty(carga.json) || carga.json.Equals("denied")) { loadingLogIn.SetActive(false); } else { perfil = Perfil.getFromJson(carga.json); perfilData = PerfilData.getFromJson(perfil.PerfilJSON); if (perfilData.Campañas.Count == 0) { botonCampañaTexto.text = "Vacio"; } else { botonCampañaTexto.text = perfilData.Campañas[0].Nombre; } if (perfilData.Jugadores.Count == 0) { botonPersonajeTexto.text = "Vacio"; } else { botonPersonajeTexto.text = perfilData.Jugadores[0].Nombre; personaje = perfilData.Jugadores[0].getPersonaje(); } if (!String.IsNullOrEmpty(perfilData.Avatar) || !String.Equals(perfilData.Avatar, "")) { image.texture = stringToIMG(perfilData.Avatar); } loadingLogIn.SetActive(false); UILogin.SetActive(false); menu.SetActive(true); userNameMenu.text = perfil.Nombre; } }
//Metodo Courutine, envia al servidor la peticion de borrar un perfil y el perfil en cuestion. Despues te develve a la pantalla de login. IEnumerator BorrarPerfil() { loadingLogIn.SetActive(true); carga.peticion = "deleteProfile"; carga.json = @"" + perfil.getAsJSON() + ""; sender.send(carga.getAsJSON()); yield return(new WaitForSeconds(Seconds)); carga = Carga.getFromJSON(str); if (!carga.json.Equals("accepted")) { loadingLogIn.SetActive(false); } else { loadingLogIn.SetActive(false); ajustes.SetActive(false); UILogin.SetActive(true); } }
//Metodo Courutine, este metodo manda al servidor un objeto carga con la peticion de borrar y los datos de la campaña. Si es satisfactorio borra la campaña. Si no, no lo hace. IEnumerator borrarCampaña() { loadingLogIn.SetActive(true); carga.peticion = "deleteCampaña"; carga.json = "{\"Perfil\": " + perfil.Id + ", \"Campaña\": " + "\"" + perfilData.Campañas[0].Nombre + "\"" + "}"; Debug.Log(carga.json); sender.send(carga.getAsJSON()); yield return(new WaitForSeconds(Seconds)); carga = Carga.getFromJSON(str); if (!carga.json.Equals("accepted")) { loadingLogIn.SetActive(false); } else { loadingLogIn.SetActive(false); perfilData.Campañas.Remove(perfilData.Campañas[0]); botonCampañaTexto.text = "vacio"; } }