Ejemplo n.º 1
0
        /// <summary>
        /// <para>Ronda</para>
        /// </summary>
        /// <returns></returns>
        public IEnumerator Ronda()        // Ronda
        {
            // Obtener el sistema freya
            Freya freya = GetComponent <Freya>();

            while (true)
            {
                this.EnviarNotificacion(ComienzoRondaNotificacion);

                // Obtener las unidades actuales
                List <Unidad> unidades = new List <Unidad>(freya.unidades);

                // Agregar al stats
                for (int n = 0; n < unidades.Count; n++)
                {
                    Stats s = unidades[n].GetComponent <Stats>();
                    s[TipoStats.CTR] += s[TipoStats.SPD];
                }

                // Ordenar las unidades
                unidades.Sort((a, b) => GetCounter(a).CompareTo(GetCounter(b)));

                // Tomar turno
                for (int n = unidades.Count - 1; n >= 0; n--)
                {
                    if (TomarTurno(unidades[n]))
                    {
                        // Cambiar el turno a la unidad
                        freya.turno.Cambio(unidades[n]);
                        unidades[n].EnviarNotificacion(TurnoComienzoNotificacion);

                        yield return(unidades[n]);

                        // Obtener el coste minimo del turno
                        int coste = turnoCoste;

                        // Modificar los parametros de la unidad (Ataque / Mover)
                        if (freya.turno.puedeUnidadMover)
                        {
                            coste += movCoste;
                        }
                        if (freya.turno.puedeUnidadAtacar)
                        {
                            coste += accionCoste;
                        }

                        // Quitar el CTR por haber movido o atacado
                        Stats s = unidades[n].GetComponent <Stats>();
                        s.SetValue(TipoStats.CTR, s[TipoStats.CTR] - coste, false);

                        unidades[n].EnviarNotificacion(TurnoCompletadoNotificacion);
                    }
                }
                // Terminar la ronda
                this.EnviarNotificacion(FinRondaNotificacion);
            }
        }
Ejemplo n.º 2
0
        public void Start()
        {
            estadoBatalla = Freya.Esperando;
            enemigos.AddRange(GameObject.FindGameObjectsWithTag("Enemigo"));
            aliados.AddRange(GameObject.FindGameObjectsWithTag("Aliado"));
            aliadoGUI = AliadoGUI.Activado;

            panelAcciones.SetActive(false);
            panelSeleccionEnemigo.SetActive(false);
            panelMagia.SetActive(false);
            panelEspeciales.SetActive(false);
            panelObjetos.SetActive(false);

            CrearBtnEnemigos();
        }
Ejemplo n.º 3
0
    public static void ConfirmCombo()
    {
        if (comboIsReady == true)
        {
            DistanceUpdate();
            DistanceNormalize();
            Monster.HPUpdate();
            Monster.RageUpdate();
            Freya.HPUpdate();
            ClearComboLine();
        }

        if (comboIsReady == false)
        {
            ClearComboLine();
        }
    }
Ejemplo n.º 4
0
 /// <summary>
 /// <para>Inicializacion de <see cref="BaseObjetivoBatalla"/></para>
 /// </summary>
 public virtual void Awake()        // Inicializacion de BaseObjetivoBatalla
 {
     freya = GetComponent <Freya>();
 }
Ejemplo n.º 5
0
 /// <summary>
 /// <para>Inicializador de <see cref="EstadoFreya"/>.</para>
 /// </summary>
 public virtual void Awake()        // Inicializador de EstadoFreya
 {
     freya = GetComponent <Freya>();
 }
Ejemplo n.º 6
0
 /// <summary>
 /// <para>Inicializador de <see cref="AIController"/></para>
 /// </summary>
 private void Awake()        // Inicializador de AIController
 {
     // Obtener freya
     freya = GetComponent <Freya>();
 }
Ejemplo n.º 7
0
        public void Update()
        {
            switch (estadoBatalla)
            {
            case Freya.Esperando:
                if (proxTurno.Count > 0)
                {
                    estadoBatalla = Freya.TomarAccion;
                }
                break;

            case Freya.TomarAccion:
                GameObject proceso = GameObject.Find(proxTurno[0].enemigo);
                if (proxTurno[0].tipo == "Enemigo")
                {
                    EnemigoMEstados EME = proceso.GetComponent <EnemigoMEstados>();
                    for (int n = 0; n < aliados.Count; n++)
                    {
                        if (proxTurno[0].objetivoEnemigo == aliados[n])
                        {
                            EME.posicionAliado = proxTurno[0].objetivoEnemigo;
                            EME.estadoTurno    = EstadoTurno.Accion;
                            break;
                        }
                        else
                        {
                            proxTurno[0].objetivoEnemigo = aliados[Random.Range(0, aliados.Count)];
                            EME.posicionAliado           = proxTurno[0].objetivoEnemigo;
                            EME.estadoTurno = EstadoTurno.Accion;
                        }
                    }
                }

                if (proxTurno[0].tipo == "Aliado")
                {
                    AliadoMEstados AME = proceso.GetComponent <AliadoMEstados>();
                    AME.posicionEnemigo = proxTurno[0].objetivoEnemigo;
                    AME.estadoTurno     = EstadoTurno.Accion;
                }
                estadoBatalla = Freya.RealizarAccion;
                break;

            case Freya.RealizarAccion:
                break;

            case Freya.ComprobarVida:
                if (aliados.Count < 1)
                {
                    // Ganar Batalla
                    estadoBatalla = Freya.Derrota;
                }
                else if (enemigos.Count < 1)
                {
                    // Perder Batalla
                    estadoBatalla = Freya.Ganar;
                }
                else
                {
                    // Limpiar panel
                    ClearPanelAtaque();
                    aliadoGUI = AliadoGUI.Activado;
                }
                break;

            case Freya.Derrota:
                NGUIDebug.Log("Has perdido la batalla");
                for (int i = 0; i < enemigos.Count; i++)
                {
                    enemigos[0].GetComponent <EnemigoMEstados>().estadoTurno = EstadoTurno.Esperando;
                }
                break;

            case Freya.Ganar:
                NGUIDebug.Log("Has ganado la batalla");
                for (int i = 0; i < aliados.Count; i++)
                {
                    aliados[0].GetComponent <AliadoMEstados>().estadoTurno = EstadoTurno.Esperando;
                }
                break;
            }

            switch (aliadoGUI)
            {
            case AliadoGUI.Activado:
                if (ManagerAliado.Count > 0)
                {
                    ManagerAliado[0].transform.Find("Selector").gameObject.SetActive(true);
                    eleccionAliado = new clsControlTurno();

                    panelAcciones.SetActive(true);

                    CrearBtnAtaques();


                    aliadoGUI = AliadoGUI.Esperando;
                }

                break;

            case AliadoGUI.Esperando:
                Time.timeScale = 0.0f;
                break;

            case AliadoGUI.Finalizado:
                AliadoTurnoTerminado();
                break;
            }
        }