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); }
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; } } }