/// <summary> /// Muestra los premios obtenidos en la partida para el jugador usuario. /// </summary> /// <param name="carta">Carta.</param> /// <param name="items">Items.</param> /// <param name="experiencia">Experiencia.</param> public void MostrarPremioPartida(Carta carta, List <Item> items, int experiencia) { puntosExp.text = "ENHORABUENA, HAS OBTENIDO " + experiencia.ToString() + " PUNTOS DE EXP"; PremioPartidaPanel.SetActive(true); if (carta != null) { CartaBase asset = carta.AssetCarta; int progresoTrebol = carta.Progreso.Piedra; int progresoPocion = carta.Progreso.Pocion; GameObject cartaGobj = Instantiate(ObjetosGenerales.Instance.CardInventario, transform); OneCardManager manager = cartaGobj.GetComponent <OneCardManager>(); ProgresoVisual progreso = cartaGobj.GetComponent <ProgresoVisual>(); manager.CartaAsset = asset; progreso.PorcentajeProgresoPiedra = progresoTrebol; progreso.PorcentajeProgresoPocion = progresoPocion; manager.LeerDatos(); progreso.LeerProgreso(); cartaGobj.transform.SetParent(horizontalLayoutGroup.gameObject.transform); } GameObject itemGobj; foreach (Item item in items) { itemGobj = Instantiate(ObjetosGenerales.Instance.ItemInventario, transform); OneItemManager manager = itemGobj.GetComponent <OneItemManager>(); manager.Item = item; manager.LeerDatosItem(); itemGobj.transform.SetParent(horizontalLayoutGroup.gameObject.transform); } }
/// <summary> /// Añade al territorio de batalla una magica. /// </summary> /// <param name="ca">Ca.</param> /// <param name="idUnico">Identifier unico.</param> /// <param name="indiceSlot">Indice slot.</param> public void AñadirMagica(CartaBase ca, int idUnico, int indiceSlot) { //Debug.Log("Añadir ente magica"); GameObject creature = GameObject.Instantiate(ObjetosGenerales.Instance.MagicaPrefab, slots.Children[indiceSlot].transform.position, Quaternion.identity) as GameObject; creature.GetComponent <MagicEffectVisual>().ColocarMagicaBocaAbajo(0f); ConfigurarEnte(creature, ca, idUnico, indiceSlot); }
/// <summary> /// Añade al territorio de batalla una criatura en defensa. /// </summary> /// <param name="ca">Ca.</param> /// <param name="idUnico">Identifier unico.</param> /// <param name="indiceSlot">Indice slot.</param> public void AñadirCriaturaDefensa(CartaBase ca, int idUnico, int indiceSlot) { //Debug.Log("Añadir ente criatura como defensa"); GameObject creature = GameObject.Instantiate(ObjetosGenerales.Instance.CriaturaPrefab, slots.Children[indiceSlot].transform.position, Quaternion.identity) as GameObject; creature.GetComponent <CreatureAttackVisual>().ColocarCriaturaEnDefensa(ConfiguracionUsuario.Instance.CardTransitionTimeFast); ConfigurarEnte(creature, ca, idUnico, indiceSlot); }
public CartaPartida(CartaBase ca) { this.assetCarta = ca; // get unique int ID ResetCosteMana(); idCarta = IDFactory.GetBattleUniqueID(); Recursos.CartasCreadasEnElJuego.Add(idCarta, this); }
/// <summary> ///Añade al territorio de batalla una criatura en ataque. /// </summary> /// <param name="ca">Ca.</param> /// <param name="idUnico">Identifier unico.</param> /// <param name="indiceSlot">Indice slot.</param> public void AñadirCriaturaAtaque(CartaBase ca, int idUnico, int indiceSlot) { //Debug.Log("Añadir ente criatura como ataque"); // create a new creature from prefab GameObject creature = GameObject.Instantiate(ObjetosGenerales.Instance.CriaturaPrefab, slots.Children[indiceSlot].transform.position, Quaternion.identity) as GameObject; // apply the look from CardAsset ConfigurarEnte(creature, ca, idUnico, indiceSlot); }
// CONSTRUCTOR public Ente(AreaPosition area, CartaBase ca) { this.area = area; this.assetCarta = ca; defensa = ca.Defensa; ataque = ca.Ataque; idCriatura = IDFactory.GetBattleUniqueID(); Recursos.EntesCreadosEnElJuego.Add(idCriatura, this); }
public Carta(string idAsset, CartaBase ca) { // set the CardAsset reference this.idAsset = idAsset; this.assetCarta = ca; // get unique int ID idCarta = IDFactory.GetMenuUniqueID(); progreso = new Progreso(); }
/// <summary> /// Instancia el ente y configura sus valores. /// </summary> /// <param name="ente">Ente.</param> /// <param name="ca">Ca.</param> /// <param name="idUnico">Identifier unico.</param> /// <param name="indiceSlot">Indice slot.</param> private void ConfigurarEnte(GameObject ente, CartaBase ca, int idUnico, int indiceSlot) { string tagEnte = ""; OneEnteManager manager = null; if (ente.name.Contains("Magica")) { tagEnte = "Magica"; manager = ente.GetComponent <OneMagicaManager> (); } else { tagEnte = "Criatura"; manager = ente.GetComponent <OneCreatureManager>(); } manager.CartaAsset = ca; manager.LeerDatosAsset(); foreach (Transform t in ente.GetComponentsInChildren <Transform>()) { t.tag = owner.ToString() + tagEnte; } // parent a new creature gameObject to table slots ente.transform.SetParent(slots.transform); // add a new creature to the list // Debug.Log ("insert index: " + index.ToString()); EntesOnTable.Insert(indiceSlot, ente); // let this creature know about its position WhereIsTheCardOrEntity w = ente.GetComponent <WhereIsTheCardOrEntity>(); w.Slot = indiceSlot; if (ente.tag.Contains("Low")) { //PETA w.EstadoVisual = VisualStates.MesaJugadorAbajo; } else { w.EstadoVisual = VisualStates.MesaJugadorArriba; } if (ente.GetComponents <AudioSource> () [0] != null && ente.GetComponents <AudioSource> () [0].clip != null) { ente.GetComponents <AudioSource>()[0].Play(); } // add our unique ID to this creature IDHolder id = ente.AddComponent <IDHolder>(); id.UniqueID = idUnico; ActualizarSlots(); MoverSlotCartas(); // TODO: remove this Comandas.Instance.CompletarEjecucionComanda(); }
/// <summary> /// Instancia una carta, con o sin progreso. /// </summary> /// <returns>The carta jugador.</returns> /// <param name="idAsset">Identifier asset.</param> /// <param name="progreso">Progreso.</param> private Carta CrearCartaJugador(string idAsset, Progreso progreso) { string assetJSON = assets.Child(idAsset).GetRawJsonValue(); CartaBase asset = JsonUtility.FromJson <CartaBase>(assetJSON); Carta carta = new Carta(idAsset, asset); if (progreso != null) { carta.Progreso = progreso; } return(carta); }
/// <summary> /// Permite crear assets de las cartas y subirlas a Firebase. /// </summary> /// <param name="cartas">Cartas.</param> private static void CrearAssetsCartas(Dictionary <string, Dictionary <string, SimpleJSON.JSONNode> > cartas) { foreach (string familia in CartasXML.CARTAS.FAMILIAS) { if (cartas.ContainsKey(familia)) { foreach (KeyValuePair <string, SimpleJSON.JSONNode> entrada in cartas[familia]) { CartaBase asset = new CartaBase(); string carpetaCarta = obtenerFormatoNombreCorrectoDirectorio(entrada.Key); string nombre = entrada.Value["carta"]["delante"]["titulo"]; asset.Nombre = nombre; Familia tipoCarta = obtenerTipoCarta(entrada.Value["carta"]["delante"]["tipo"]); asset.Familia = tipoCarta; if (asset.Familia.Equals(Familia.Magica)) { asset.Efecto = obtenerEfecto(entrada.Value ["carta"] ["delante"] ["efecto"]); } string descripcion = entrada.Value["carta"]["delante"]["descripcion"]; asset.Descripcion = descripcion; asset.InfoCarta = entrada.Value["carta"]["delante"]["infoCarta"]; int mana = System.Int32.Parse(entrada.Value["carta"]["delante"]["mana"]); asset.CosteMana = mana; string rutaImagen = obtenerRutaImagen(familia, carpetaCarta, entrada.Value["carta"]["delante"]["nombreImagen"]); asset.RutaImagenCarta = rutaImagen; int defensa = 0; int ataque = 0; if (!asset.Familia.Equals(Familia.Magica)) { defensa = System.Int32.Parse(entrada.Value["carta"]["delante"]["defensa"]); ataque = System.Int32.Parse(entrada.Value["carta"]["delante"]["ataque"]); } asset.Defensa = defensa; asset.Ataque = ataque; int evolucion = System.Int32.Parse(entrada.Value["carta"]["delante"]["evolucion"]); asset.Evolucion = evolucion; int idEvolucion = System.Int32.Parse(entrada.Value["carta"]["delante"]["idEvolucion"]); asset.IDEvolucion = idEvolucion; GuardarAssetBaseDatos(familia, asset); } } } }
private int Scontro(CartaBase attaccante, CartaBase difensore, PictureBox elemAtt, PictureBox elemDif, Giocatore_carte_base vittima, Label vita_vittima) { //Controlla gli elementi //fuoco, sasso, ghiaccio //fuoco - sasso (fuoco) //ghiaccio - sasso (sasso) //fuoco - ghiaccio (ghiaccio) bool vittoria = attaccante.Elemento == 'f' && difensore.Elemento == 's' || attaccante.Elemento == 's' && difensore.Elemento == 'g' || attaccante.Elemento == 'g' && difensore.Elemento == 'f'; int plus = 0; if (vittoria) //vittoria elementale { plus = 1; elemAtt.BackColor = Color.LightGreen; elemDif.BackColor = Color.LightCoral; } else if (attaccante.Elemento == difensore.Elemento) //parità { elemAtt.BackColor = Color.Bisque; elemDif.BackColor = Color.Bisque; } else //sconfitta elementale { plus = -1; elemAtt.BackColor = Color.LightCoral; elemDif.BackColor = Color.LightGreen; } //Per ora la determinazione non conta int dmg = attaccante.Atk - difensore.Def; dmg += plus; if (dmg < 0) { dmg = 0; } vittima.LessHp(dmg); //Output vita vita_vittima.Text = "HP: " + vittima.CurHp + "/" + vittima.MaxHp; vita_vittima.ForeColor = Color.Red; return(dmg); }
/// <summary> /// Busca en la base de datos Firebase si existe una evolucion con los parametros dados. /// </summary> /// <returns>The evolucion.</returns> /// <param name="familia">Familia.</param> /// <param name="evolucion">Evolucion.</param> /// <param name="idEvolucion">Identifier evolucion.</param> public KeyValuePair <string, CartaBase> BuscarEvolucion(Familia familia, int evolucion, int idEvolucion) { var json = assets.Value as Dictionary <string, object>; List <string> keyList = new List <string>(json.Keys); KeyValuePair <string, CartaBase> evolucionEncontrada = new KeyValuePair <string, CartaBase> ("", null); foreach (string idAsset in keyList) { string assetJSON = assets.Child(idAsset).GetRawJsonValue(); CartaBase asset = JsonUtility.FromJson <CartaBase>(assetJSON); if (asset.Familia.Equals(familia) && asset.IDEvolucion == idEvolucion && asset.Evolucion == (evolucion + 1)) { evolucionEncontrada = new KeyValuePair <string, CartaBase> (idAsset, asset); } } return(evolucionEncontrada); }
private GameObject CrearCarta(Carta carta) { CartaBase asset = carta.AssetCarta; int progresoPiedra = carta.Progreso.Piedra; int progresoPocion = carta.Progreso.Pocion; GameObject elemento = Instantiate(ObjetosGenerales.Instance.CardInventario, transform); elemento.GetComponent <BoxCollider2D> ().size = gridLayoutGroup.cellSize; IDHolder id = elemento.AddComponent <IDHolder>(); id.UniqueID = carta.ID; OneCardManager manager = elemento.GetComponent <OneCardManager>(); ProgresoVisual progreso = elemento.GetComponent <ProgresoVisual>(); manager.CartaAsset = asset; progreso.PorcentajeProgresoPiedra = progresoPiedra; progreso.PorcentajeProgresoPocion = progresoPocion; manager.LeerDatos(); progreso.LeerProgreso(); elemento.transform.SetParent(gridLayoutGroup.gameObject.transform); return(elemento); }
// CONSTRUCTOR public Magica(AreaPosition area, CartaBase ca) : base(area, ca) { this.efectoActivado = false; }
/// <summary> /// Permite subir a firebase una carta. /// </summary> /// <param name="familia">Familia.</param> /// <param name="asset">Asset.</param> public static void GuardarAssetBaseDatos(string familia, CartaBase asset) { BaseDatos.Instance.GuardarCarta(familia, asset); }
/// <summary> /// Añade una carta al conjunto de cartas creadas en el juego en Firebase. /// </summary> /// <param name="familia">Familia.</param> /// <param name="asset">Asset.</param> public void GuardarCarta(string familia, CartaBase asset) { ReferenciaAssets().Push().SetRawJsonValueAsync(JsonUtility.ToJson(asset)); Debug.Log("Guardar carta ok"); }
// CONSTRUCTOR public Criatura(AreaPosition area, CartaBase ca, PosicionCriatura posicionCriatura) : base(area, ca) { this.posicionCriatura = posicionCriatura; this.haAtacado = false; }
private void bt_attacco_Click(object sender, EventArgs e) { bt_attacco.Hide(); bt_nascondi.Hide(); bt_successivo.Show(); string tipo = player.CarteInMano[cartaSelezionata].Tipo; if (tipo == "attacco") { CartaBase cartaTua = (CartaBase)(player.CarteInMano[cartaSelezionata]); cartaTua.SetBuff(player.ValBuff); cartaTua.UsaCarta(player); if (tuoTurno) { //Il nemico sceglie una carta nemico.ScegliCarta(); CartaBase cartaNemico = (CartaBase)(nemico.CartaUsata); cartaNemico.Visualizza(img_cartaA, nomeCartaA, detA, attA, defA, elemA); detA.BackColor = Color.LightGoldenrodYellow; defA.BackColor = Color.LightBlue; attA.BackColor = Color.LightGray; //Buff a livello grafico if (nemico.DebuffApplicato) { attA.Text += nemico.DebuffVal; defA.Text += nemico.DebuffVal; attA.ForeColor = Color.BlueViolet; defA.ForeColor = Color.BlueViolet; } else { attA.ForeColor = Color.Black; defA.ForeColor = Color.Black; } int dmg = Scontro(cartaTua, cartaNemico, elem0, elemA, nemico, vita_avversario); if (dmg >= 3)//aggiungi determinazione quando fai un buon danno { cartaTua.AddDeterminazione(2); det0.Text = cartaTua.Determinazione.ToString(); det0.ForeColor = Color.GreenYellow; } else //comunque ogni turni perdi punti { cartaTua.DimDeterminazione(1); //perdi un punto det0.Text = cartaTua.Determinazione.ToString(); //aggiorni la scritta } } else { CartaBase cartaNemico = (CartaBase)(nemico.CartaUsata); cartaNemico.SetBuff(nemico.DebuffVal); int dmg = Scontro(cartaNemico, cartaTua, elemA, elem0, player, vita_giocatore); cartaNemico.SetBuff(0); if (dmg >= 2) //perdi determinazione quando subisci troppi danni { cartaTua.DimDeterminazione(2); det0.Text = cartaTua.Determinazione.ToString(); det0.ForeColor = Color.Crimson; } else //comunque ogni turni perdi punti { cartaTua.DimDeterminazione(1); //perdi un punto det0.Text = cartaTua.Determinazione.ToString(); //aggiorni la scritta } } cartaTua.SetBuff(0); //finito il turno levo il buff } else { Carta cartaTua = player.CarteInMano[cartaSelezionata]; if (tipo == "cura") { ((CartaCura)cartaTua).UsaCarta(player); } else if (tipo == "curaEstesa") { ((CartaCuraEstesa)cartaTua).UsaCarta(player); curaEstesa.Show(); } else if (tipo == "buff") { ((CartaBuff)cartaTua).UsaCarta(player); img_buff.Show(); } else if (tipo == "debuff") { ((CartaDebuff)cartaTua).UsaCarta(nemico); //applica l'effetto sul nemico img_debuff.Show(); } else if (tipo == "dannoContiuno") { ((CartaDannoContinuo)cartaTua).UsaCarta(nemico); //applica l'effetto sul nemico img_dannoPerpetuo.Show(); } if (!tuoTurno) { //Per ora la determinazione non conta int dmg = ((CartaBase)(nemico.CartaUsata)).Atk; if (dmg < 0) { dmg = 0; } player.LessHp(dmg); //Output vita vita_giocatore.Text = "HP: " + player.CurHp + "/" + player.MaxHp; vita_giocatore.ForeColor = Color.Red; } //Ogni volta che usi una carta effetto perdi determinazione cartaTua.DimDeterminazione(1); //perdi un punto det0.Text = cartaTua.Determinazione.ToString(); //aggiorni la scritta } //icone buff/debuff if (tuoTurno) { if (player.CuraEstesa) { player.ApplicaBuffCura(); vita_giocatore.Text = "HP: " + player.CurHp + "/" + player.MaxHp; vita_giocatore.ForeColor = Color.YellowGreen; curaEstesa.Show(); } if (player.BuffApplicato) { player.ApplicaBuffStats(); img_buff.Show(); } } else { if (nemico.DebuffApplicato) { nemico.ApplicaDebuff(); } if (nemico.DannoApplicato) { nemico.ApplicaDannoPerpetuo(); vita_avversario.Text = "HP: " + nemico.CurHp + "/" + nemico.MaxHp; vita_avversario.ForeColor = Color.Red; } } //Allo scadere dei turni toglie i flags di status if (!player.CuraEstesa) { curaEstesa.Hide(); } if (!player.BuffApplicato) { img_buff.Hide(); } if (!nemico.DebuffApplicato) { img_debuff.Hide(); } if (!nemico.DannoApplicato) { img_dannoPerpetuo.Hide(); } //controlla vita del nemico if (nemico.CurHp <= 0) { MessageBox.Show("Hai vinto lo scontro!"); /* * //Pesca una nuova carta per non rompere il sistema * player.PescaCarta(cartaSelezionata); * * player.CarteInMano[cartaSelezionata] * .Visualizza(img_carta[cartaSelezionata], nomeCarta[cartaSelezionata], det[cartaSelezionata], * att[cartaSelezionata], def[cartaSelezionata], elem[cartaSelezionata]);*/ nemico.GameOver(); } else if (player.CurHp <= 0) { MessageBox.Show("Hai perso lo scontro."); /* * //Pesca una nuova carta per non rompere il sistema * player.PescaCarta(cartaSelezionata); * * player.CarteInMano[cartaSelezionata] * .Visualizza(img_carta[cartaSelezionata], nomeCarta[cartaSelezionata], det[cartaSelezionata], * att[cartaSelezionata], def[cartaSelezionata], elem[cartaSelezionata]); */ player.GameOver(); } //controlla determinazione if (player.CarteInMano[cartaSelezionata].Determinazione <= 0 && player.CarteInMano[cartaSelezionata].Tipo != "morto") //ovviamente la carta non deve essere già morta { //nascondi la carta vecchia player.CarteInMano[cartaSelezionata].Nascondi(img_carta0, nomeCarta0, det0, att0, def0, elem0); //la carta viene rimpiazzata con la carta morto int indice = player.CarteInMano[cartaSelezionata].Indice; //salvo il vecchio indice player.CarteInMano[cartaSelezionata].SetUtilizzabile(false); //la carta verrà rimossa dal mazzo player.CarteInMano[cartaSelezionata] = ListaCarte.GetMorto(); player.CarteInMano[cartaSelezionata].Indice = indice; player.Mazzo.MorteCarta(indice); //uccide la carta //mostra la carta nuova player.CarteInMano[cartaSelezionata].Visualizza(img_carta0, nomeCarta0, det0); } }
private void bt_successivo_Click(object sender, EventArgs e) { bt_successivo.Hide(); det0.ForeColor = Color.Black; //rimuovi dalla selezione player.CarteInMano[cartaSelezionata].Nascondi(img_carta0, nomeCarta0, det0, att0, def0, elem0); img_carta0.Show(); img_carta0.Image = Properties.Resources.SpazioVuoto; //peschi una nuova carta player.PescaCarta(cartaSelezionata); player.CarteInMano[cartaSelezionata] .Visualizza(img_carta[cartaSelezionata], nomeCarta[cartaSelezionata], det[cartaSelezionata], att[cartaSelezionata], def[cartaSelezionata], elem[cartaSelezionata]); cartaSelezionata = -1; tuoTurno = !tuoTurno; //cambia turno //Entrambi tornano neri nel caso uno dei due fosse rosso vita_avversario.ForeColor = Color.Black; vita_giocatore.ForeColor = Color.Black; if (!tuoTurno) { //Il nemico sceglie una nuova carta con cui attaccare nemico.ScegliCarta(); CartaBase cartaNemico = (CartaBase)(nemico.CartaUsata); cartaNemico.Visualizza(img_cartaA, nomeCartaA, detA, attA, defA, elemA); defA.BackColor = Color.LightGray; attA.BackColor = Color.LightBlue; elemA.BackColor = Color.LightBlue; detA.BackColor = Color.LightGoldenrodYellow; messaggioGiocatore.Hide(); messaggioNemico.Show(); //Buff a livello grafico if (nemico.DebuffApplicato) { attA.Text += nemico.DebuffVal; defA.Text += nemico.DebuffVal; attA.ForeColor = Color.BlueViolet; defA.ForeColor = Color.BlueViolet; } else { attA.ForeColor = Color.Black; defA.ForeColor = Color.Black; } } else { ((CartaBase)(nemico.CartaUsata)).Nascondi(img_cartaA, nomeCartaA, detA, attA, defA, elemA); img_cartaA.Show(); img_cartaA.Image = Properties.Resources.SpazioVuoto; messaggioGiocatore.Show(); messaggioNemico.Hide(); } }