Exemplo n.º 1
0
    //------------------------------------------------------------------------------------------------------------------

    /*
     * METODO QUE SE EJECUTA CUANDO SE PULSA SOBRE UN ASPECTO
     */
    public void bApariencia()
    {
        //Comprobar si la apariencia esta bloqueada
        if (bloqueado)
        {
            if (infoPersistente.getEnergia() >= precioApariencia)
            {
                //Iniciamos proceso de compra
                solicitarComprar();
            }
            else
            {
                //Mostrar mensaje saldo insuficiente
                string texto = "No tienes suficiente energia para comprar esta apariencia";
                ventanaEmergente.GetComponent <VentanaInformacion>().mostrarInfo(texto, "Aceptar");
            }
        }
        else
        {
            //Guardar la interfaz activa
            refBD.getBaseDatos().GetReference("usuarios").Child(refBD.getUsuario().UserId).Child("aparienciaActiva").SetValueAsync(nombreAspecto);
            infoPersistente.setAparienciaActiva(nombreAspecto);
            //Establecer nueva apariencia en la imagen
            animatorImagen1.SetTrigger(nombreAspecto);
            animatorImagen2.SetTrigger(nombreAspecto);

            //Desmarcar todos los objetos
            for (int i = 0; i < apariencias.Length; i++)
            {
                apariencias[i].GetComponent <Apariencia>().desmarcar();
            }
            //Marcar objeto como activo
            marcar();
        }
    }
Exemplo n.º 2
0
    //------------------------------------------------------------------------------------------------------------------

    /*
     * METODO QUE SE EJECUTA AL CAMBIAR LA SENSIBILIDAD DEL MOVIMIENTO
     */
    public void cambiadoSenMov()
    {
        //Obtener valor seleccionado
        int ajuste = (int)sSenMov.value;

        //Guardar el nuevo ajuste en el nodo de firebase
        refBD.getBaseDatos().GetReference("usuarios").Child(refBD.getUsuario().UserId).Child("ajustes").Child("senMov").SetValueAsync(ajuste + "");
        //Cambiar directamente el ajuste en el objeto de informacion persistente
        infoPersistente.setSenMov(ajuste);
    }
Exemplo n.º 3
0
    //------------------------------------------------------------------------------------------------------------------

    /*
     * METODO PARA ESTABLECER LOS METODO DE ESCUCHA CONTINUAOS DE LOS NODOS CON INFORMACION NECESARIA DE LA BASE DE DATOS
     */
    public void obtenerDatosContinuos()
    {
        //Poner a la escucha el campo correspondiente para obtener la informacion continua
        refBD.getBaseDatos()
        .GetReference("usuarios/" + refBD.getUsuario().UserId)
        .ValueChanged += HandleValueChanged;
    }
Exemplo n.º 4
0
    //------------------------------------------------------------------------------------------------------------------

    /*
     * METODO QUE SE EJECUTA AL INICIO DE LA EJECUCIÓN PARA REALIZAR REFERENCIAS
     */
    void Awake()
    {
        //Obtener referencias
        infoPersistente = GameObject.Find("InfoPersistente").GetComponent <InfoPersistente>();
        refBD           = GameObject.Find("ReferenciaBD").GetComponent <ReferenciaBaseDatos>();

        //Resetear los nodos de juego de la base de datos
        infoPersistente.setJugando(true);
        infoPersistente.setPeticionBatalla("null");
        infoPersistente.setRespuestaBatalla("null");
        refBD.getBaseDatos().GetReference("usuarios").Child(refBD.getUsuario().UserId).Child("batalla/peticion").SetValueAsync("null");
        refBD.getBaseDatos().GetReference("usuarios").Child(refBD.getUsuario().UserId).Child("batalla/respuesta").SetValueAsync("null");

        //Inicializacion
        txtCuentaAtras.text = tiempoCuentaAtras.ToString("f0");
        panelCuentaAtras.gameObject.SetActive(false);
        txtCuentaAtras.text = tiempoReaparecer.ToString("f0");
        panelReaparecer.gameObject.SetActive(false);
    }
Exemplo n.º 5
0
    //------------------------------------------------------------------------------------------------------------------

    public void bCancelar()
    {
        //Indicar rechazo de solicitud de batalla
        refBD.getBaseDatos().GetReference("usuarios").Child(uidOponente).Child("batalla/respuesta").SetValueAsync("false");
        //Reiniciar peticion
        refBD.getBaseDatos().GetReference("usuarios").Child(refBD.getUsuario().UserId).Child("batalla/peticion").SetValueAsync("null");
        panelPrincipal.gameObject.SetActive(false);
        //Reiniciar la lectura de solicitudes de batallas
        detectorBatallas.reiniciarLecturaBatallas();
    }
Exemplo n.º 6
0
    //------------------------------------------------------------------------------------------------------------------

    /*
     * METODO QUE SE EJECUTA AL INICIAR EL SCRIPT
     */
    void Start()
    {
        //Obtener referencias
        refBD           = GameObject.Find("ReferenciaBD").GetComponent <ReferenciaBaseDatos>();
        infoPersistente = GameObject.Find("InfoPersistente").GetComponent <InfoPersistente>();

        //Establecer los datos a null para comenzar
        refBD.getBaseDatos().GetReference("usuarios").Child(refBD.getUsuario().UserId).Child("batalla/peticion").SetValueAsync("null");
        refBD.getBaseDatos().GetReference("usuarios").Child(refBD.getUsuario().UserId).Child("batalla/respuesta").SetValueAsync("null");

        //Poner a la escucha el campo correspondiente para obtener todos los nombres de usuario ocupados de la base de datos
        refBD.getBaseDatos()
        .GetReference("usuarios/" + refBD.getUsuario().UserId)
        .ValueChanged += HandleValueChanged;

        //Llamada al metodo de actualizar foto por si ha cambiado respecto a la ultima conexion
        //actualizarFotoPerfil();

        //Establecer animacion del personaje
        animatorImagenWalter.SetTrigger(infoPersistente.getAparienciaActiva());
    }
Exemplo n.º 7
0
    //------------------------------------------------------------------------------------------------------------------

    /*
     * METODO QUE SE EJECUTA AL INICIAR EL SCRIPT
     */
    void Start()
    {
        //Obtener referencias
        refBD = GameObject.Find("ReferenciaBD").GetComponent <ReferenciaBaseDatos>();

        //Ocultar el panel no tienes amigos
        panelSinAmigos.gameObject.SetActive(false);

        //Poner a la escucha el nodo para obtener amigos o solicitudes
        refBD.getBaseDatos()
        .GetReference("usuarios/" + refBD.getUsuario().UserId + "/relaciones")
        .ValueChanged += HandleValueChanged;
    }
Exemplo n.º 8
0
    //------------------------------------------------------------------------------------------------------------------

    /*
     * METODO QUE SE EJECUTA REPETIDAMENTE CADA FOTOGRAMA DE LA EJECUCION
     */
    void Update()
    {
        //Obtener autenticacion
        FirebaseAuth auth = FirebaseAuth.DefaultInstance;

        //Comprobar si esta conectado al servidor photon y logueado para cargar la escena principal
        if (PhotonNetwork.IsConnected && auth != null)
        {
            //Ejecutar solo la primera vez
            if (primeraEjecucion)
            {
                primeraEjecucion = false;
                refBD.setUsuario(auth.CurrentUser);
                cargarEscenaPrincipal();
            }
        }

        //Si se activa la variable de escena principal
        if (escenaPrincipal)
        {
            if (obtenerinfo && primeraEjecucion2)
            {
                primeraEjecucion2 = false;
                obtenerinfo       = false;
                //Cargar informacion inicial
                infoPersistente.obtenerDatosContinuos();
                //Iniciar Informacion
                refBD.getBaseDatos().GetReference("usuarios").Child(refBD.getUsuario().UserId).Child("batalla/peticion").SetValueAsync("null");
                refBD.getBaseDatos().GetReference("usuarios").Child(refBD.getUsuario().UserId).Child("batalla/respuesta").SetValueAsync("null");
            }

            //No cambiar de escena mientras no se recupere toda la informacion inicial
            if (infoPersistente.isObtenidoTodo())
            {
                //Cargar escena principal
                SceneManager.LoadScene("Principal");
            }
        }
    }
Exemplo n.º 9
0
    //-----------------------------------------------------------------------------------------------------

    /*
     * METODO PARA VOLVER A ESCUCHAR PETICIONES DE BATALLA
     */
    public void reiniciarLecturaBatallas()
    {
        tiempoAux = tiempoVisualizacion;

        //Ocultar ventana de notificacion de batalla
        ventanaBatalla.GetComponent <Batalla>().ocultar();
        //restablecer valor en el nodo de peticiones
        refBD.getBaseDatos().GetReference("usuarios").Child(refBD.getUsuario().UserId).Child("batalla/peticion").SetValueAsync("null");
        //Indicar que ya no hay mensaje creado
        contarTiempo = false;
        crearMensaje = true;
        //Indicar que no estamos en batalla
        infoPersistente.setEnBatalla(false);
    }
Exemplo n.º 10
0
    //------------------------------------------------------------------------------------------------------------------

    /*
     * METODO QUE SE EJECUTA AL INICIAR EL SCRIPT
     */
    void Start()
    {
        //Obtener referencias
        refBD = GameObject.Find("ReferenciaBD").GetComponent <ReferenciaBaseDatos>();

        //Añadir listener que llamara un metodo cuando los valores del campo de texto cambien
        ifUsuarioBuscar.onEndEdit.AddListener(delegate { buscarUsuarioAux(); });

        //Inicializar componentes
        panelInicio.gameObject.SetActive(true);
        panelSinResultados.gameObject.SetActive(false);

        //Poner a la escucha el nodo para obtener amigos
        refBD.getBaseDatos()
        .GetReference("usuarios/" + refBD.getUsuario().UserId + "/relaciones")
        .ValueChanged += HandleValueChanged;
    }
Exemplo n.º 11
0
    //========>

    /*
     * METODO PARA EFECTUAR LA PROPIA ELIMINACIÓN DE LA AMISTAD EN AMBOS USUARIOS AL PULSAR EN ACEPTAR DEL MENSAJE EMERGENTE
     */
    public void borrarAmigo()
    {
        //Eliminar la entrada de la relacion para los 2 usuarios
        refBD.getBaseDatos().GetReference("usuarios").Child(refBD.getUsuario().UserId).Child("relaciones").Child(uid).RemoveValueAsync();
        refBD.getBaseDatos().GetReference("usuarios").Child(uid).Child("relaciones").Child(refBD.getUsuario().UserId).RemoveValueAsync();
    }
Exemplo n.º 12
0
    //------------------------------------------------------------------------------------------------------------------

    /*
     * METODO PARA MOSTRAR EL PANEL FINAL DE LA PARTIDA
     */
    public async System.Threading.Tasks.Task mostrarAsync(string estado, int energiaGanada)
    {
        //Desconectarnos de la sala de juego creada
        if (PhotonNetwork.CurrentRoom != null)
        {
            PhotonNetwork.LeaveRoom();
        }

        //Obtener referencias
        refBD           = GameObject.Find("ReferenciaBD").GetComponent <ReferenciaBaseDatos>();
        infoPersistente = GameObject.Find("InfoPersistente").GetComponent <InfoPersistente>();

        //Obtener mi personaje si no lo he obtenido previamente
        if (miPersonaje == null)
        {
            miPersonaje = GameObject.Find("miPersonaje");
        }

        //Bloquear el personaje para no poder interactuar mas con el
        if (miPersonaje != null)
        {
            miPersonaje.GetComponent <EstadoJugador>().setEstado(0);
        }

        //Establecer la energia y titulo en funcion de si hemos ganado, perdido, empatado o se ha desconectado el oponente
        int energia = 0;

        switch (estado)
        {
        case "ganado":
            energia = energiaGanada + 30;     //Sumar el bonus
            panelBonus.gameObject.SetActive(true);
            txtTitulo.text = "Has ganado";
            break;

        case "perdido":
            energia = energiaGanada;
            panelBonus.gameObject.SetActive(false);
            txtTitulo.text = "Has perdido";
            break;

        case "empatado":
            energia = energiaGanada;
            panelBonus.gameObject.SetActive(false);
            txtTitulo.text = "Empate";
            break;

        case "desconectado":
            panelBonus.gameObject.SetActive(true);
            energia        = energiaGanada + 30; //Sumar el bonus
            txtTitulo.text = "El oponente ha abandonado la partida";
            break;
        }

        //Mostrar la energia obtenida
        txtEnergiaGanada.text = ("+" + energiaGanada);
        //Sumar energia al nodo de firebase
        await refBD.getBaseDatos().GetReference("usuarios").Child(refBD.getUsuario().UserId).Child("energia").SetValueAsync("" + (infoPersistente.getEnergia() + energia));

        //Establecer los datos a null
        await refBD.getBaseDatos().GetReference("usuarios").Child(refBD.getUsuario().UserId).Child("batalla/peticion").SetValueAsync("null");

        await refBD.getBaseDatos().GetReference("usuarios").Child(refBD.getUsuario().UserId).Child("batalla/respuesta").SetValueAsync("null");

        //Cuando sumamos la energia a la base de datos mostramos el propio panel informativo
        panelContenido.gameObject.SetActive(true);
        canvasPantalla.gameObject.SetActive(false);
    }
Exemplo n.º 13
0
    //------------------------------------------------------------------------------------------------------------------

    /*
     * METODO QUE SE EJECUTA REPETIDAMENTE CADA FOTOGRAMA DE LA EJECUCION
     */
    void Update()
    {
        /////////////////////////////////////////////// RECIBIR RESPUESTAS A PETICIONES /////////////////////////////////////////////////

        if (solicitado)
        {
            if (tiempoAux > 0)
            {
                tiempoAux -= Time.deltaTime;
            }
            else
            {
                //Si ha finalizado el tiempo de vida de la solicitud sin respuesta
                //Ocultar ventana de espera
                ventanaEmergente.GetComponent <VentanaEspera>().ocultar();
                //Marcar como fin de solicitud
                solicitado = false;
                infoPersistente.setEnBatalla(false);

                //reiniciar tiempo
                tiempoAux = tiempoEspera;
                //Mostrar mensaje info
                string texto = "Tiempo de espera agotado";
                ventanaEmergente.GetComponent <VentanaInformacion>().mostrarInfo(texto, "Aceptar");
            }
        }
        else if (buscando)
        {
            if (tiempoAux > 0)
            {
                tiempoAux -= Time.deltaTime;
            }
            else
            {
                //Si ha finalizado el tiempo de vida de la busqueda sin respuesta
                //Ocultar ventana de espera
                ventanaEmergente.GetComponent <VentanaEspera>().ocultar();
                //Marcar como fin de solicitud
                buscando = false;
                infoPersistente.setEnBatalla(false);
                //Salir de la sala creada
                gestionPartidas.salirSala();
                //reiniciar tiempo
                tiempoAux = tiempoEspera;
                //Mostrar mensaje info
                string texto = "No hay ningun jugador en este momento, intentelo mas tarde";
                ventanaEmergente.GetComponent <VentanaInformacion>().mostrarInfo(texto, "Aceptar");
            }
        }


        if (infoPersistente.getRespuestaBatalla().Equals("true"))
        {
            //Crear Sala de juego con el nombre de mi uid
            gestionPartidas.crearSalaAmigo(refBD.getUsuario().UserId);
            //Reinicializar la respuesta
            refBD.getBaseDatos().GetReference("usuarios").Child(refBD.getUsuario().UserId).Child("batalla/respuesta").SetValueAsync("null");
            //Establecer a nulo la respuesta para evitar que se ejecute mas de una vez
            infoPersistente.setRespuestaBatalla("null");
        }
        else if (infoPersistente.getRespuestaBatalla().Equals("false"))
        {
            //Reinicializar la respuesta
            refBD.getBaseDatos().GetReference("usuarios").Child(refBD.getUsuario().UserId).Child("batalla/respuesta").SetValueAsync("null");
            ventanaEmergente.GetComponent <VentanaEspera>().ocultar();
            //Mostrar mensaje info
            string texto = "El oponente ha rechazado la batalla";
            ventanaEmergente.GetComponent <VentanaInformacion>().mostrarInfo(texto, "Aceptar");
            //Marcar como fin de solicitud
            solicitado = false;
            infoPersistente.setEnBatalla(false);
            infoPersistente.setRespuestaBatalla("null");
        }
    }
Exemplo n.º 14
0
    //-----------------------------------------------------------------------------------------------------------------------

    /*
     * METODO PARA OBTENER LOS DATOS DEL LISTADO DE UID DE USUARIOS PASADO POR PARAMETRO, AGREGANDOLOS A LA LISTVIEW
     */
    public async System.Threading.Tasks.Task ObtenerDatosPorUIDAsync(List <string> listEncontrados)
    {
        string nombreUsu = "", foto = "";

        //Recorrer lista de UID correspondientes con usuarios encontrados
        foreach (var uid in listEncontrados)
        {
            bool yaEsAmigo = false, yaEstaPedido = false, esUnaSolicitud = false;

            //Comprobar si el usuario encontrado ya es amigo nuestro
            foreach (var uidAmigo in uidAmigos)
            {
                if (uidAmigo.Equals(uid))
                {
                    yaEsAmigo = true;
                }
            }
            //Comprobar si ya le hemos mandado una solicitud al usuario encontrado
            foreach (var uidAmigo in uidPeticiones)
            {
                if (uidAmigo.Equals(uid))
                {
                    yaEstaPedido = true;
                }
            }
            //Comprobar si nos ha mandado una solicitud
            foreach (var uidAmigo in uidSolicitudes)
            {
                if (uidAmigo.Equals(uid))
                {
                    esUnaSolicitud = true;
                }
            }

            //Leer el nodo de relaciones del usuario
            await refBD.getBaseDatos().GetReference("usuarios/" + uid)
            .GetValueAsync().ContinueWith(task => {
                if (task.IsFaulted)
                {
                }
                else if (task.IsCompleted)
                {
                    DataSnapshot snapshot = task.Result;

                    IEnumerable <DataSnapshot> posLeida = snapshot.Children;

                    //Recorrer los resultado leidos del usuario
                    foreach (var linea in posLeida)
                    {
                        //En funcion del dato leido lo alamacenaremos en la variable adecuada
                        if (linea.Key.ToString().Equals("nombreUsu"))
                        {
                            nombreUsu = linea.Value.ToString();
                        }
                        if (linea.Key.ToString().Equals("foto"))
                        {
                            foto = linea.Value.ToString();
                        }
                    }
                }
            });

            //Añadir encontrado
            Amigo usuario = new Amigo {
                nombre = nombreUsu, urlFoto = foto, codigoUid = uid
            };

            //Comprobar que no somos nosotros mismos
            if (uid != refBD.getUsuario().UserId)
            {
                //Crear el objeto en el contenedor de la lista
                GameObject elementoLista = Instantiate(prefabElemento, contenedorLista);

                //Si ya somos amigos lo indicaremos
                if (yaEsAmigo)
                {
                    //Añadir elemento con los botones de un amigo activados
                    elementoLista.GetComponent <ElementoLista>().crearMiAmigo(usuario, ventanaEmergente, solicitarBatalla);
                }
                else if (yaEstaPedido)
                {
                    //Llamada al metodo que le asigna los datos al elemento del listado
                    elementoLista.GetComponent <ElementoLista>().crear(usuario, "peticion", ventanaEmergente);
                }
                else if (esUnaSolicitud)
                {
                    //Llamada al metodo que le asigna los datos al elemento del listado
                    elementoLista.GetComponent <ElementoLista>().crear(usuario, "solicitud", ventanaEmergente);
                }
                else
                {
                    //Llamada al metodo que le asigna los datos al elemento del listado
                    elementoLista.GetComponent <ElementoLista>().crear(usuario, "agregar", ventanaEmergente);
                }
            }
        }
    }