Ejemplo n.º 1
0
    public Evento SiguienteEvento(CartaDeEvento carta)
    {
        //si es el evento final y estamos en el tutorial nos vamos a la siguiente escena
        if (esElEventoFinal && esElTutorial)
        {
            SceneManager.LoadScene("Game");
            return(null);
        }
        if (eventosSiguientes.Count <= 0)
        {
            throw new SiguienteEventoNotFoundException("El evento " + gameObject.name + " no tiene eventos siguiente");
        }
        Evento resultado = null;

        foreach (Evento e in eventosSiguientes)
        {
            bool elEventoTieneElMismoNombreQueLaCarta = e.Nombre == carta.gameObject.transform.Find("Canvas").Find("Panel").Find("Text (TMP)").gameObject.GetComponent <TextMeshProUGUI>().text;
            if (elEventoTieneElMismoNombreQueLaCarta)
            {
                resultado = e;
                break;
            }
        }
        if (resultado == null)
        {
            throw new Exception("no encontramos el escenario siguiente");
        }
        return(resultado);
    }
    public virtual CartaDeEvento TomarCarta()
    {
        int           random    = Random.Range(0, cartas.Count - 1);
        CartaDeEvento resultado = cartas[random];

        //cartas.RemoveAt(random);//Se acaban descomentado//nunca se acaban comentado
        return(resultado);
    }
    public async void SiguienteEscena(CartaDeEvento carta)
    {
        //comprobar primero miramos si tenemos escena cargada
        if (eventoActual == null)
        {
            eventoActual = listaDeEventos[0];
            //instanciamos
            eventoActual = Instantiate(eventoActual, referencia.transform);
            //mostramos la escena
            eventoActual.ComenzarEscena();
            source.clip = eventoActual.Sonido;
            source.loop = true;
            source.Play();
        }
        else
        {
            await eventoActual.TerminarEscena();

            eventoReferencia = eventoActual.SiguienteEvento(carta);
            //normalizamos la situación
            cartasDeLaMano.MostramosMano();
            if (eventoReferencia == null)
            {
                return;

                throw new SiguienteEventoNotFoundException("No hay mas eventos");
            }
            //destruimos el game object
            Destroy(eventoActual.gameObject);
            //construimos el siguiente escenario
            eventoActual = Instantiate(eventoReferencia, referencia.transform);
            //mostramos la escena
            eventoActual.ComenzarEscena();
            source.clip = eventoActual.Sonido;
            source.loop = true;
            source.Play();
        }
    }
 public void OnClick(CartaDeEvento carta)
 {
     manejadorDeEventos.SiguienteEscena(carta);
 }
Ejemplo n.º 5
0
    private void MostrarAlternativasDeCartasdeEvento(Carta cartaUtilizada)
    {
        //por ahora no va a importar cuales carta de evento saque, solo va a sacar 3
        foreach (GameObject c in referenciaDeCartaEvento)
        {
            Destroy(c.gameObject);
        }
        referenciaDeCartaEvento = new List <GameObject>();

        int incremento = 35;

        //Debemos tomar todas las cartas que podamos
        cartasDeEventoEnLaMano = new List <CartaDeEvento>();


        bool esImpar = manejadorDeEventos.eventoActual.eventosSiguientes.Count % 2 != 0;

        foreach (Evento evento in manejadorDeEventos.eventoActual.eventosSiguientes)
        {
            if (cartaUtilizada.Tipo == evento.Tipo)
            {
                continue;
            }
            CartaDeEvento cartaDelEvento = barajaDeEventos.TomarCarta();
            GameObject    objeto         = new GameObject(cartaDelEvento.Nombre + cartaDelEvento.Tipo + cartaDelEvento.Puntaje);
            objeto.transform.SetParent(referenciaDePosicionDeCartaEvento.transform);
            objeto.transform.position = referenciaDePosicionDeCartaEvento.transform.position;
            referenciaDeCartaEvento.Add(objeto);
            //Tomar x cartas de la baraja y agregarlas a la mano
            CartaDeEvento cartaInstanciada = GameObject.Instantiate(cartaDelEvento, objeto.transform);//instanciamos la carta
            cartaInstanciada.click          = clickEvento;
            cartaInstanciada.textoParaCarta = evento.Nombre;
            cartaInstanciada.CambiarElTextoDentroDeLaCarta();
            cartasDeEventoEnLaMano.Add(cartaDelEvento);

            //le damos rotacion
            if (!esImpar)
            {
                if (positivo <= negativo)
                {
                    int     incrementoPorCoso = incremento * -1;
                    Vector3 rotacion          = objeto.transform.rotation.eulerAngles;
                    rotacion.z = incremento;
                    objeto.transform.eulerAngles = rotacion;
                    positivo++;
                    cartaInstanciada.gameObject.GetComponent <SpriteRenderer>().sortingOrder = incrementoPorCoso;
                    cartaInstanciada.gameObject.transform.Find("Canvas").GetComponent <Canvas>().sortingOrder = incrementoPorCoso + 1;
                }
                else
                {
                    Vector3 rotacion          = objeto.transform.rotation.eulerAngles;
                    int     incrementoPorCoso = incremento * -1 * -1;
                    rotacion.z = incremento * -1;
                    objeto.transform.eulerAngles = rotacion;
                    negativo++;
                    cartaInstanciada.gameObject.GetComponent <SpriteRenderer>().sortingOrder = incrementoPorCoso;
                    cartaInstanciada.gameObject.transform.Find("Canvas").GetComponent <Canvas>().sortingOrder = incrementoPorCoso + 1;
                    incremento += 40;
                }
            }
            else
            {
                esImpar = !esImpar;
            }
        }
    }