Esempio n. 1
0
        private void EventoColision(ColisionInformacion info)
        {
            Entidad entidad = info.GetEntidadImpacto();

            if (entidad != null)
            {
                if (entidad.GetModuloVitalidad() == null)
                {
                    return;
                }
                if (!entidad.GetModuloVitalidad().GetPerfilVitalidad().IsColision(info.GetColisionImpacto()))
                {
                    return;
                }
                if (entidad.GetTipo() != EntidadTipo.ALIADO)
                {
                    return;
                }
                if (info.IsColisionEstado(ColisionEstado.ENTER))
                {
                    if (!entidades.Contains(entidad))
                    {
                        entidades.Add(entidad);
                    }
                }
                else if (info.IsColisionEstado(ColisionEstado.EXIT))
                {
                    if (entidades.Contains(entidad))
                    {
                        if (entidad == objetivo)
                        {
                            objetivo = null;
                        }
                        entidades.Remove(entidad);
                    }
                }
            }
        }
Esempio n. 2
0
        private void EventoColision(ColisionInformacion info)
        {
            Entidad entidad = info.GetEntidadImpacto();

            if (entidad == null)
            {
                return;
            }
            if (info.GetColisionImpacto() == null)
            {
                return;
            }
            if (info.GetColisionImpacto().GetColisionTipo() != ColisionTipo.FISICA)
            {
                return;
            }

            if (info.GetColisionEstado() == ColisionEstado.ENTER)
            {
                if (entidades.Contains(entidad))
                {
                    return;
                }
                entidades.Add(entidad);
            }
            else
            {
                if (!entidades.Contains(entidad))
                {
                    return;
                }
                entidades.Remove(entidad);
            }

            switch (objetivo)
            {
            case AreaObjetivo.JUGADOR:
                Jugador jugador = entidad as Jugador;
                if (jugador != null)
                {
                    this.entidad = entidad;
                    SolicitarEvento(info.GetColisionEstado() == ColisionEstado.ENTER);
                }
                break;

            case AreaObjetivo.ENTIDAD:
                if (entidad == entidadobjetivo)
                {
                    this.entidad = entidad;
                    SolicitarEvento(info.GetColisionEstado() == ColisionEstado.ENTER);
                }
                break;

            case AreaObjetivo.METADATA:
                string   valor  = entidad.GetMetadato(metanombre);
                string[] clases = valor.Split(' ');
                if (clases != null)
                {
                    for (int i = 0; i < clases.Length; i++)
                    {
                        if (clases[i] == metaclase)
                        {
                            this.entidad = entidad;
                            SolicitarEvento(info.GetColisionEstado() == ColisionEstado.ENTER);
                        }
                    }
                }
                break;

            case AreaObjetivo.TODOS:

                this.entidad = entidad;
                SolicitarEvento(info.GetColisionEstado() == ColisionEstado.ENTER);

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