/// <summary> /// Permite jugar un ente para el bot. /// </summary> /// <returns><c>true</c>, if ente was jugared, <c>false</c> otherwise.</returns> bool JugarEnte() { bool movimientoHecho = false; for (int i = 0; i < NumEntesEnLaMesa() && !movimientoHecho; i++) { Ente cl = EntesEnLaMesa() [i]; if (Controlador.Instance.EntePuedeUsarse(cl)) { // attack a random target with a creature if (cl.GetType() == typeof(Magica)) { if (!((Magica)cl).EfectoActivado) { if (!Controlador.Instance.EsMagicaTrampa(cl)) { Controlador.Instance.ActivarEfectoMagica(cl.ID); movimientoHecho = true; } } } else { Criatura criatura = (Criatura)cl; if (criatura.PosicionCriatura.Equals(PosicionCriatura.ATAQUE)) { if (!Controlador.Instance.CriaturaHaAtacado(criatura)) { JugadorPartida enemigo = Controlador.Instance.OtroJugador(this); if (enemigo.NumEntesEnLaMesa() > 0) { int index = Random.Range(0, enemigo.NumEntesEnLaMesa()); Ente enteObjetivo = enemigo.EntesEnLaMesa() [index]; if (enteObjetivo.GetType() == typeof(Criatura) || (enteObjetivo.GetType() == typeof(Magica) && !((Magica)enteObjetivo).EfectoActivado)) { Controlador.Instance.AtacarEnte(cl.ID, enteObjetivo.ID); movimientoHecho = true; } } else { Controlador.Instance.AtacarJugador(cl.ID, enemigo.ID); movimientoHecho = true; } } } else { Controlador.Instance.CambiarPosicionCriatura(criatura.ID); movimientoHecho = true; } } } } if (movimientoHecho) { InsertDelay(1f); } return(movimientoHecho); }
/// <summary> /// Función que permite jugar una carta al jugador. /// </summary> public override void EmpezarEjecucionComanda() { //Eliminar la carta de la mano del jugador y elimina el gameobject HandVisual PlayerHand = Controlador.Instance.AreaJugador(p).manoVisual; //TODO se podria hacer que el id de la carta pase a ser el id de la criatura GameObject card = IDHolder.GetGameObjectWithID(cl.ID); PlayerHand.EliminarCarta(card); IDHolder.EliminarElemento(card.GetComponent <IDHolder>()); GameObject.Destroy(card); //Permite la previsualizacion de cartas //HoverPreview.PrevisualizacionesPermitidas = true; OpcionesObjeto.PrevisualizacionesPermitidas = true; // Añade la carta en el tablero PlayerArea areaJugador = Controlador.Instance.AreaJugador(p); if (ente.GetType() == typeof(Magica)) { areaJugador.tableVisual.AñadirMagica(cl.AssetCarta, ente.ID, tablePos); } else { if (((Criatura)ente).PosicionCriatura.Equals(PosicionCriatura.ATAQUE)) { areaJugador.tableVisual.AñadirCriaturaAtaque(cl.AssetCarta, ente.ID, tablePos); } else { areaJugador.tableVisual.AñadirCriaturaDefensa(cl.AssetCarta, ente.ID, tablePos); } } }
/// <summary> /// Muestra la accion (ataque, defensa, activar) correspondiente al ente en la batalla. /// </summary> /// <param name="idEnte">Identifier ente.</param> public void MostrarAccion(int idEnte) { Ente ente = Recursos.EntesCreadosEnElJuego[idEnte]; if (ente.GetType() == typeof(Magica)) { //Si la magica es de tipo trampa no debe salir la opcion de activar voluntariamente if (EntePreparado(ente) && !EsMagicaTrampa(ente)) { AccionesPopUp.Instance.MostrarAccionEfecto(); AccionesPopUp.Instance.RegistrarCallBack(ActivarEfectoMagica, idEnte); } } else { Criatura criatura = (Criatura)ente; if (criatura.PosicionCriatura.Equals(PosicionCriatura.ATAQUE)) { if (!CriaturaHaAtacado(criatura)) { AccionesPopUp.Instance.MostrarAccionDefensa(); } } else { AccionesPopUp.Instance.MostrarAccionAtaque(); } AccionesPopUp.Instance.RegistrarCallBack(CambiarPosicionCriatura, idEnte); } }
/// <summary> /// Mira si la criatura se encuentra en posicion de ataque. /// </summary> /// <returns><c>true</c>, if en posicion ataque was estaed, <c>false</c> otherwise.</returns> /// <param name="idEnte">Identifier ente.</param> public bool EstaEnPosicionAtaque(int idEnte) { Ente ente = Recursos.EntesCreadosEnElJuego[idEnte]; if (ente.GetType() == typeof(Criatura)) { return(((Criatura)ente).PosicionCriatura.Equals(PosicionCriatura.ATAQUE)); } return(false); }
/// <summary> /// Función que permite atacar a un ente. /// </summary> /// <param name="idAtacante">Identifier atacante.</param> /// <param name="idObjetivo">Identifier objetivo.</param> public void AtacarEnte(int idAtacante, int idObjetivo) { Ente atacante = Recursos.EntesCreadosEnElJuego[idAtacante]; Ente objetivo = Recursos.EntesCreadosEnElJuego[idObjetivo]; if (atacante.GetType() == typeof(Criatura)) { ((Criatura)atacante).HaAtacado = true; } if (objetivo.GetType() == typeof(Criatura)) { Criatura criaturaObjetivo = (Criatura)objetivo; AtacarCriatura((Criatura)atacante, criaturaObjetivo); } else { ActivarEfectoMagica(idObjetivo, idAtacante); } }
/// <summary> /// Mira si el ente es mágico. /// </summary> /// <returns><c>true</c>, if magica was esed, <c>false</c> otherwise.</returns> /// <param name="idEnte">Identifier ente.</param> public bool EsMagica(int idEnte) { Ente ente = Recursos.EntesCreadosEnElJuego[idEnte]; return(ente.GetType() == typeof(Magica)); }