protected override void Awake()
 {
     base.Awake();
     temporizador = new Temporizador(delay);
     perfil       = GetComponent <PerfilAtaque>();
     estado       = AtaqueEstado.DELAY;
 }
 public AtaqueInformacion(PerfilAtaque perfil, float ataquebasico, Entidad entidad, Entidad entidadatacada)
 {
     this.perfil         = perfil;
     this.ataquebasico   = ataquebasico;
     this.entidad        = entidad;
     this.entidadatacada = entidadatacada;
 }
        public float GetAtaque(PerfilAtaque perfil = null)
        {
            float a = GetAtaqueBase();

            if (perfil != null)
            {
                a *= perfil.GetMultiplicador();
            }
            return(a);
        }
        private void EventoColision(ColisionInformacion info)
        {
            if (!IsEnable())
            {
                return;
            }

            Entidad entidad = info.GetEntidadImpacto();

            if (entidad == null || info.GetColisionEstado() != ColisionEstado.ENTER)
            {
                return;
            }
            ModuloVitalidad vitalidad = entidad.GetModuloVitalidad();

            if (vitalidad == null)
            {
                return;
            }
            if (!vitalidad.GetPerfilVitalidad().IsColision(info.GetColisionImpacto()))
            {
                return;
            }
            PerfilAtaque perfil = GetPerfil(info.GetColision());

            if (perfil == null)
            {
                return;
            }

            switch (GetObjetivo())
            {
            case AtaqueObjetivo.ALIADO:

                if (entidad.GetTipo() == EntidadTipo.ALIADO)
                {
                    SolicitarEvento(new AtaqueInformacion(
                                        perfil,
                                        GetAtaque(perfil),
                                        GetEntidad(),
                                        entidad
                                        ));
                    vitalidad.AddDanio(GetAtaque(perfil), entidad, info.GetColisionImpacto());
                }

                break;

            case AtaqueObjetivo.ENEMIGO:

                if (entidad.GetTipo() == EntidadTipo.ENEMIGO)
                {
                    SolicitarEvento(new AtaqueInformacion(
                                        perfil,
                                        GetAtaque(perfil),
                                        GetEntidad(),
                                        entidad
                                        ));
                    vitalidad.AddDanio(GetAtaque(perfil), entidad, info.GetColisionImpacto());
                }

                break;

            case AtaqueObjetivo.AMBOS:

                if (entidad.GetTipo() == EntidadTipo.ALIADO ||
                    entidad.GetTipo() == EntidadTipo.ENEMIGO)
                {
                    SolicitarEvento(new AtaqueInformacion(
                                        perfil,
                                        GetAtaque(perfil),
                                        GetEntidad(),
                                        entidad
                                        ));
                    vitalidad.AddDanio(GetAtaque(perfil), entidad, info.GetColisionImpacto());
                }

                break;

            case AtaqueObjetivo.OBJETO:

                if (entidad.GetTipo() == EntidadTipo.OBJETO)
                {
                    SolicitarEvento(new AtaqueInformacion(
                                        perfil,
                                        GetAtaque(perfil),
                                        GetEntidad(),
                                        entidad
                                        ));
                    vitalidad.AddDanio(GetAtaque(perfil), entidad, info.GetColisionImpacto());
                }

                break;

            case AtaqueObjetivo.TODOS:

                if (entidad.GetTipo() != EntidadTipo.DESCONOCIDO)
                {
                    SolicitarEvento(new AtaqueInformacion(
                                        perfil,
                                        GetAtaque(perfil),
                                        GetEntidad(),
                                        entidad
                                        ));
                    vitalidad.AddDanio(GetAtaque(perfil), entidad, info.GetColisionImpacto());
                }

                break;
            }
        }