Exemple #1
0
        internal GameObject findClosestEnemy()
        {
            //gather potential targets
            HPHandler.Faction self = this.GetComponent <HPHandler>().faction;

            float      closest = float.MaxValue;
            GameObject result  = null;

            foreach (HPHandler.Faction item in Enum.GetValues(typeof(HPHandler.Faction)))
            {
                //skip non-enemy factions
                if (item == self || item == HPHandler.Faction.Neutral)
                {
                    continue;
                }

                //loop through faction members
                var factionMembers = HPHandler.factionMembers;
                foreach (var enemy in factionMembers[item])
                {
                    //calc dist
                    var dist = Vector3.Distance(this.gameObject.transform.position,
                                                enemy.gameObject.transform.position);
                    if (dist < closest && targetValid(enemy))
                    {
                        closest = dist;
                        result  = enemy;
                    }
                }
            }

            return(result);
        }
    private GameObject findClosestEnemy(float range)
    {
        //gather potential targets
        HPHandler.Faction self            = this.GetComponent <HPHandler>().faction;
        GameObject        target          = null;
        float             closestDistance = range;

        foreach (HPHandler.Faction item in Enum.GetValues(typeof(HPHandler.Faction)))
        {
            if (item == self || item == HPHandler.Faction.Neutral)
            {
                continue;
            }

            //loop thorugh faction members
            var factionMembers = HPHandler.factionMembers;
            foreach (var enemy in factionMembers[item])
            {
                var dist = Vector3.Distance(this.gameObject.transform.position, enemy.gameObject.transform.position);
                if (dist < closestDistance && isValidTarget(enemy.gameObject))
                {
                    target          = enemy.gameObject;
                    closestDistance = dist;
                }
            }
        }

        return(target);
    }
Exemple #3
0
        internal GameObject findEnemy()
        {
            //gather potential targets
            HPHandler.Faction self            = this.GetComponent <HPHandler>().faction;
            GameObject        target          = null;
            float             closestDistance = maxRange;

            foreach (HPHandler.Faction item in Enum.GetValues(typeof(HPHandler.Faction)))
            {
                //skip non-enemy factions
                if (item == self || item == HPHandler.Faction.Neutral)
                {
                    continue;
                }

                //loop through faction members
                var factionMembers = HPHandler.factionMembers;
                foreach (var enemy in factionMembers[item])
                {
                    var dist = Vector3.Distance(this.gameObject.transform.position,
                                                enemy.gameObject.transform.position);
                    if (dist < closestDistance && dist > minRange && enemy.GetComponent <Collider>() != null)
                    {
                        target          = enemy.gameObject;
                        closestDistance = dist;
                    }
                }
            }

            return(target);
        }
Exemple #4
0
        internal GameObject findEnemy(bool random)
        {
            if (!random)
            {
                return(findEnemy());
            }

            //gather potential targets
            HPHandler.Faction self = this.GetComponent <HPHandler>().faction;
            var potentialEnemies   = new List <GameObject>();

            foreach (HPHandler.Faction item in Enum.GetValues(typeof(HPHandler.Faction)))
            {
                //skip non-enemy factions
                if (item == self || item == HPHandler.Faction.Neutral)
                {
                    continue;
                }

                //loop through faction members
                var factionMembers = HPHandler.factionMembers;
                foreach (var enemy in factionMembers[item])
                {
                    //calc dist
                    var dist = Vector3.Distance(this.gameObject.transform.position,
                                                enemy.gameObject.transform.position);

                    //check dist
                    if (dist < maxRange && dist > minRange && enemy.GetComponent <Collider>() != null)
                    {
                        potentialEnemies.Add(enemy);
                    }
                }
            }

            //using ? operator for absolutely no reason at all, but it looks cool
            return(potentialEnemies.Count == 0 ? null : potentialEnemies[Random.Range(0, potentialEnemies.Count)]);
        }
Exemple #5
0
 private void Start()
 {
     ownFaction = this.GetComponent <HPHandler>().faction;
 }