Exemplo n.º 1
0
        protected override int ValueProvider(AbstractAIComponent context)
        {
            TankAIComponent   tankAiComponent = (TankAIComponent)context;
            List <GameObject> bonusEntities   = tankAiComponent.TankEntity.BonusReference.Value;
            float             distance        = 0;

            if (DistanceSorter == DistanceSorter.Nearest)
            {
                distance = Mathf.Infinity;
                if (bonusEntities.Count == 0)
                {
                    return((int)distance);
                }
                distance = bonusEntities
                           .Select(bonusEntity =>
                                   Vector3.Distance(bonusEntity.transform.position, tankAiComponent.transform.position))
                           .Concat(new[] { distance })
                           .Min();
            }
            if (DistanceSorter == DistanceSorter.Farthest)
            {
                distance = Mathf.NegativeInfinity;
                if (bonusEntities.Count == 0)
                {
                    return((int)distance);
                }
                distance = bonusEntities
                           .Select(bonus => Vector3.Distance(bonus.transform.position, tankAiComponent.transform.position))
                           .Concat(new[] { distance })
                           .Max();
            }
            return((int)distance);
        }
Exemplo n.º 2
0
        protected override int ValueProvider(AbstractAIComponent context)
        {
            TankAIComponent tankAiComponent = (TankAIComponent)context;
            GameObject      target          = GetData <GameObject>();

            return((int)Vector3.Distance(tankAiComponent.gameObject.transform.position, target.transform.position));
        }
Exemplo n.º 3
0
        protected override List <Object> CollectionProvider(AbstractAIComponent context)
        {
            TankAIComponent tankAiComponent = (TankAIComponent)context;

            return(new List <Object>(tankAiComponent.TankEntity.BonusReference.Value
                                     .Select(entity => entity.gameObject)));
        }
Exemplo n.º 4
0
        protected override int ValueProvider(AbstractAIComponent context)
        {
            TankAIComponent tankAiComponent = (TankAIComponent)context;
            GameObject      data            = GetData <GameObject>();

            return(tankAiComponent.TankEntity.Aggressors.Contains(data) ? 1 : 0);
        }
Exemplo n.º 5
0
        protected override int ValueProvider(AbstractAIComponent context)
        {
            TankAIComponent   tankAiComponent     = (TankAIComponent)context;
            List <GameObject> waypointGameObjects = tankAiComponent.TankEntity.SeekWaypointInRadius();
            float             distance            = 0;

            if (DistanceSorter == DistanceSorter.Nearest)
            {
                distance = Mathf.Infinity;
                if (waypointGameObjects.Count == 0)
                {
                    return((int)distance);
                }
                distance = waypointGameObjects
                           .Select(waypoint => Vector3.Distance(waypoint.transform.position, tankAiComponent.transform.position))
                           .Concat(new[] { distance })
                           .Min();
            }
            if (DistanceSorter == DistanceSorter.Farthest)
            {
                distance = Mathf.NegativeInfinity;
                if (waypointGameObjects.Count == 0)
                {
                    return((int)distance);
                }
                distance = waypointGameObjects
                           .Select(waypoint => Vector3.Distance(waypoint.transform.position, tankAiComponent.transform.position))
                           .Concat(new[] { distance })
                           .Max();
            }
            return((int)distance);
        }
Exemplo n.º 6
0
        protected override List <Object> CollectionProvider(AbstractAIComponent context)
        {
            TankAIComponent tankAiComponent = (TankAIComponent)context;

            return(new List <Object>(tankAiComponent.TankEntity.SeekWaypointInRadius()
                                     .Select(entity => entity.gameObject)));
        }
Exemplo n.º 7
0
        protected override int ValueProvider(AbstractAIComponent context)
        {
            TankAIComponent tankAiComponent = (TankAIComponent)context;
            GameObject      data            = GetData <GameObject>();

            return(data.transform.InLineOfView(tankAiComponent.transform, tankAiComponent.TankEntity.Aggressors
                                               .Select(go => go.transform).ToList(), tankAiComponent.TankEntity.CoverLayer).Count);
        }
Exemplo n.º 8
0
        protected override int ValueProvider(AbstractAIComponent context)
        {
            TankAIComponent tankAiComponent = (TankAIComponent)context;

            if (FactionType == FactionType.All)
            {
                return(tankAiComponent.TankEntity.TanksReference.Value.Count);
            }
            return(tankAiComponent.TankEntity.TanksReference.Value
                   .Count(o => o.GetComponent <TankEntity>().GetFaction(tankAiComponent.TankEntity) == FactionType));
        }
Exemplo n.º 9
0
        protected override int ValueProvider(AbstractAIComponent context)
        {
            TankAIComponent tankAiComponent = (TankAIComponent)context;
            GameObject      data            = GetData <GameObject>();

            return(data.transform.InLineOfView(tankAiComponent.transform,
                                               tankAiComponent.TankEntity.TanksReference.Value
                                               .Select(o => o.GetComponent <TankEntity>())
                                               .Where(entity => entity.gameObject == tankAiComponent.TankEntity.Target)
                                               .Select(entity => entity.transform)
                                               .ToList(), tankAiComponent.TankEntity.CoverLayer).Count == 0 ? 1 : 0);
        }
Exemplo n.º 10
0
        protected override List <Object> CollectionProvider(AbstractAIComponent context)
        {
            TankAIComponent   tankAiComponent = (TankAIComponent)context;
            List <GameObject> tanks           = tankAiComponent.TankEntity.TanksReference.Value.ToList();

            tanks.Remove(tankAiComponent.gameObject);
            if (Faction != FactionType.All)
            {
                tanks.RemoveAll(o => o.GetComponent <TankEntity>().GetFaction(tankAiComponent.TankEntity) != Faction);
            }
            return(new List <Object>(tanks.Where(go => go != null)
                                     .Select(entity => entity.gameObject)));
        }
Exemplo n.º 11
0
 private void Awake()
 {
     _navMeshAgent    = GetComponent <NavMeshAgent>();
     _tankAiComponent = GetComponent <TankAIComponent>();
     MaxHP            = PlayerPrefs.GetInt(Properties.PlayerPrefs.HealthPoints, Properties.PlayerPrefsDefault.HealthPoints);
     CurrentHP        = MaxHP;
     CanonDamage      = PlayerPrefs.GetInt(Properties.PlayerPrefs.CanonDamage, Properties.PlayerPrefsDefault.CanonDamage);
     CanonPower       = PlayerPrefs.GetInt(Properties.PlayerPrefs.CanonPower, Properties.PlayerPrefsDefault.CanonPower);
     TurretSpeed      = PlayerPrefs.GetInt(Properties.PlayerPrefs.TurretSpeed, Properties.PlayerPrefsDefault.TurretSpeed);
     ReloadTime       = PlayerPrefs.GetInt(Properties.PlayerPrefs.ReloadTime, Properties.PlayerPrefsDefault.ReloadTime);
     ExplosionDamage  = PlayerPrefs.GetInt(Properties.PlayerPrefs.ExplosionDamage, Properties.PlayerPrefsDefault.ExplosionDamage);
     ExplosionRadius  = PlayerPrefs.GetInt(Properties.PlayerPrefs.ExplosionRadius, Properties.PlayerPrefsDefault.ExplosionRadius);
     WaypointRadius   = PlayerPrefs.GetInt(Properties.PlayerPrefs.WaypointSeekRadius, Properties.PlayerPrefsDefault.WaypointSeekRadius);
 }
Exemplo n.º 12
0
        protected override int ValueProvider(AbstractAIComponent context)
        {
            TankAIComponent tankAiComponent = (TankAIComponent)context;

            if (FactionType == FactionType.All)
            {
                return(tankAiComponent.TankEntity.TankInRay() ? 1 : 0);
            }
            GameObject tankInRay = tankAiComponent.TankEntity.TankInRay();

            if (tankInRay != null && tankInRay.GetComponent <TankEntity>().GetFaction(tankAiComponent.TankEntity) == FactionType)
            {
                return(1);
            }
            return(0);
        }
Exemplo n.º 13
0
        protected override int ValueProvider(AbstractAIComponent context)
        {
            TankAIComponent tankAiComponent = (TankAIComponent)context;
            GameObject      data            = GetData <GameObject>();

            if (FactionType == FactionType.All)
            {
                return(data.transform.InLineOfView(tankAiComponent.transform,
                                                   tankAiComponent.TankEntity.TanksReference.Value
                                                   .Select(o => o.GetComponent <TankEntity>())
                                                   .Where(entity => entity != tankAiComponent.TankEntity)
                                                   .Select(entity => entity.transform).ToList(), tankAiComponent.TankEntity.CoverLayer).Count);
            }
            return(data.transform.InLineOfView(tankAiComponent.transform,
                                               tankAiComponent.TankEntity.TanksReference.Value
                                               .Select(o => o.GetComponent <TankEntity>())
                                               .Where(entity => entity != tankAiComponent.TankEntity && tankAiComponent.TankEntity.GetFaction(entity) == FactionType)
                                               .Select(entity => entity.transform).ToList(), tankAiComponent.TankEntity.CoverLayer).Count);
        }
Exemplo n.º 14
0
        protected override int ValueProvider(AbstractAIComponent context)
        {
            TankAIComponent   tankAiComponent = (TankAIComponent)context;
            List <GameObject> tankEntities    = tankAiComponent.TankEntity.TanksReference.Value.ToList();

            tankEntities.Remove(tankAiComponent.gameObject);
            if (FactionType != FactionType.All)
            {
                tankEntities.RemoveAll(o => o.GetComponent <TankEntity>().GetFaction(tankAiComponent.TankEntity) != FactionType);
            }
            float distance = 0;

            if (DistanceSorter == DistanceSorter.Nearest)
            {
                distance = Mathf.Infinity;
                if (tankEntities.Count == 0)
                {
                    return((int)distance);
                }
                distance = tankEntities
                           .Select(tankEntity => Vector3.Distance(tankEntity.transform.position, tankAiComponent.transform.position))
                           .Concat(new[] { distance })
                           .Min();
            }
            if (DistanceSorter == DistanceSorter.Farthest)
            {
                distance = Mathf.NegativeInfinity;
                if (tankEntities.Count == 0)
                {
                    return((int)distance);
                }
                distance = tankEntities
                           .Where(go => go != tankAiComponent.gameObject)
                           .Select(tankEntity => Vector3.Distance(tankEntity.transform.position, tankAiComponent.transform.position))
                           .Concat(new[] { distance })
                           .Max();
            }
            return((int)distance);
        }
Exemplo n.º 15
0
        protected override int ValueProvider(AbstractAIComponent context)
        {
            TankAIComponent tankAiComponent = (TankAIComponent)context;

            return(tankAiComponent.TankEntity.BonusReference.Value.Count > 0 ? 1 : 0);
        }
Exemplo n.º 16
0
        protected override int ValueProvider(AbstractAIComponent context)
        {
            TankAIComponent tankAiComponent = (TankAIComponent)context;

            return(tankAiComponent.TankEntity.Aggressors.Count);
        }
Exemplo n.º 17
0
        protected override int ValueProvider(AbstractAIComponent context)
        {
            TankAIComponent tankAiComponent = (TankAIComponent)context;

            return(GetData <GameObject>() == tankAiComponent.TankEntity.Target ? 1 : 0);
        }
Exemplo n.º 18
0
        public override void Execute(AbstractAIComponent context, AIData aiData)
        {
            TankAIComponent tankAiComponent = (TankAIComponent)context;

            tankAiComponent.TankEntity.Fire();
        }
Exemplo n.º 19
0
        protected override int ValueProvider(AbstractAIComponent context)
        {
            TankAIComponent tankAiComponent = (TankAIComponent)context;

            return(tankAiComponent.TankEntity.Destination != null ? 1 : 0);
        }
Exemplo n.º 20
0
        public override void Execute(AbstractAIComponent context, AIData aiData)
        {
            TankAIComponent tankAiComponent = (TankAIComponent)context;

            tankAiComponent.TankEntity.Target = aiData.GetData <GameObject>();
        }
Exemplo n.º 21
0
        protected override int ValueProvider(AbstractAIComponent context)
        {
            TankAIComponent tankAiComponent = (TankAIComponent)context;

            return(tankAiComponent.TankEntity.TankInRay() == tankAiComponent.TankEntity.Target ? 1 : 0);
        }
Exemplo n.º 22
0
        protected override int ValueProvider(AbstractAIComponent context)
        {
            TankAIComponent tankAiComponent = (TankAIComponent)context;

            return(tankAiComponent.TankEntity.CurrentHP);
        }
Exemplo n.º 23
0
        protected override int ValueProvider(AbstractAIComponent context)
        {
            TankAIComponent tankAiComponent = (TankAIComponent)context;

            return(tankAiComponent.TankEntity.IsShellLoaded ? 1 : 0);
        }