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); }
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)); }
protected override List <Object> CollectionProvider(AbstractAIComponent context) { TankAIComponent tankAiComponent = (TankAIComponent)context; return(new List <Object>(tankAiComponent.TankEntity.BonusReference.Value .Select(entity => entity.gameObject))); }
protected override int ValueProvider(AbstractAIComponent context) { TankAIComponent tankAiComponent = (TankAIComponent)context; GameObject data = GetData <GameObject>(); return(tankAiComponent.TankEntity.Aggressors.Contains(data) ? 1 : 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); }
protected override List <Object> CollectionProvider(AbstractAIComponent context) { TankAIComponent tankAiComponent = (TankAIComponent)context; return(new List <Object>(tankAiComponent.TankEntity.SeekWaypointInRadius() .Select(entity => entity.gameObject))); }
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); }
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)); }
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); }
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))); }
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); }
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); }
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); }
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); }
protected override int ValueProvider(AbstractAIComponent context) { TankAIComponent tankAiComponent = (TankAIComponent)context; return(tankAiComponent.TankEntity.BonusReference.Value.Count > 0 ? 1 : 0); }
protected override int ValueProvider(AbstractAIComponent context) { TankAIComponent tankAiComponent = (TankAIComponent)context; return(tankAiComponent.TankEntity.Aggressors.Count); }
protected override int ValueProvider(AbstractAIComponent context) { TankAIComponent tankAiComponent = (TankAIComponent)context; return(GetData <GameObject>() == tankAiComponent.TankEntity.Target ? 1 : 0); }
public override void Execute(AbstractAIComponent context, AIData aiData) { TankAIComponent tankAiComponent = (TankAIComponent)context; tankAiComponent.TankEntity.Fire(); }
protected override int ValueProvider(AbstractAIComponent context) { TankAIComponent tankAiComponent = (TankAIComponent)context; return(tankAiComponent.TankEntity.Destination != null ? 1 : 0); }
public override void Execute(AbstractAIComponent context, AIData aiData) { TankAIComponent tankAiComponent = (TankAIComponent)context; tankAiComponent.TankEntity.Target = aiData.GetData <GameObject>(); }
protected override int ValueProvider(AbstractAIComponent context) { TankAIComponent tankAiComponent = (TankAIComponent)context; return(tankAiComponent.TankEntity.TankInRay() == tankAiComponent.TankEntity.Target ? 1 : 0); }
protected override int ValueProvider(AbstractAIComponent context) { TankAIComponent tankAiComponent = (TankAIComponent)context; return(tankAiComponent.TankEntity.CurrentHP); }
protected override int ValueProvider(AbstractAIComponent context) { TankAIComponent tankAiComponent = (TankAIComponent)context; return(tankAiComponent.TankEntity.IsShellLoaded ? 1 : 0); }