Beispiel #1
0
    private void GetAndSetEnemiesInArea()
    {
        NearbyColliders = Physics2D.OverlapCircleAll(transform.position, checkRadius, Utilities.bulletIgnoreLayerMask);
        bool foundOneMilitaryEnemy = false;
        bool foundOneEnemy         = false;
        bool foundOneAsteroid      = false;

        if (!gameObject.tag.Equals("Untagged"))
        {
            foreach (Collider2D collider in NearbyColliders)
            {
                if (!collider.tag.Equals("Asteroid"))
                {
                    if (RelationshipManager.AreFactionsInWar(gameObject.tag, collider.tag))
                    {
                        foundOneEnemy = true;

                        if (collider.gameObject.layer == 9)
                        {
                            foundOneMilitaryEnemy = true;
                            break;
                        }
                    }
                }
                else
                {
                    foundOneAsteroid = true;
                }
            }
        }

        EnemyNearby         = foundOneEnemy;
        EnemyMilitaryNearby = foundOneMilitaryEnemy;
        AsteroidNearby      = foundOneAsteroid;
    }
Beispiel #2
0
    private void Update()
    {
        if (Input.touchCount == 1)
        {
            if (Input.GetTouch(0).position.x > Camera.main.pixelWidth * 0.3f)
            {
                if (Input.GetTouch(0).phase == TouchPhase.Began)
                {
                    Vector2 tappedPoint = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);

                    Collider2D selectedCollider = Physics2D.OverlapPoint(tappedPoint);
                    if (selectedCollider != null)
                    {
                        SelectionManager.HandleClickOnCollider(selectedCollider);
                    }
                    else
                    {
                        SelectionManager.HandleRightClick(Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position), FactionsManager.playerFaction.factionTag);
                    }
                }
            }
        }

        if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved)
        {
            Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition;
            transform.Translate(-touchDeltaPosition.x * movementSpeed * Time.deltaTime, -touchDeltaPosition.y * movementSpeed * Time.deltaTime, 0);
        }

        if (Input.touchCount >= 3)
        {
            if (RelationshipManager.AreFactionsInWar("Faction1", "Faction2"))
            {
                RelationshipManager.EndWar("Faction1", "Faction2");
                RelationshipManager.EndWar("Faction2", "Faction1");

                RelationshipManager.EndWar("Faction1", "Faction3");
                RelationshipManager.EndWar("Faction3", "Faction1");

                RelationshipManager.EndWar("Faction3", "Faction2");
                RelationshipManager.EndWar("Faction2", "Faction3");
            }
            else
            {
                RelationshipManager.StartWar("Faction1", "Faction2");
                RelationshipManager.StartWar("Faction2", "Faction1");

                RelationshipManager.StartWar("Faction1", "Faction3");
                RelationshipManager.StartWar("Faction3", "Faction1");

                RelationshipManager.StartWar("Faction3", "Faction2");
                RelationshipManager.StartWar("Faction2", "Faction3");
            }
        }
    }
Beispiel #3
0
    private Collider2D getClosestEnemy()
    {
        Collider2D currentClosest      = null;
        float      currentClosestEnemy = float.MaxValue;

        foreach (Collider2D collider in aiAttributes.AttachedSensors.NearbyColliders)
        {
            if (collider != null)
            {
                if (RelationshipManager.AreFactionsInWar(gameObject.tag, collider.tag) && collider.gameObject.layer == 9)
                {
                    float currentColliderDistance = Vector2.Distance(gameObject.transform.position, collider.transform.position);
                    if (currentClosest == null || currentClosestEnemy > currentColliderDistance)
                    {
                        currentClosest      = collider;
                        currentClosestEnemy = currentColliderDistance;
                    }
                }
            }
        }

        return(currentClosest);
    }
Beispiel #4
0
    private string giveDominantFactionTag()
    {
        string returnValue = null;

        if (tag.Equals("Untagged"))
        {
            IDictionary <string, int> factionMilitaryShipsPresent = new Dictionary <string, int>();
            foreach (string key in FactionsManager.factions.Keys)
            {
                factionMilitaryShipsPresent[key] = 0;
            }

            foreach (Collider2D collider in attachedSensors.NearbyColliders)
            {
                if (collider != null)
                {
                    if (collider.gameObject.layer == 9)
                    {
                        factionMilitaryShipsPresent[collider.tag]++;
                    }
                }
            }

            int mostMilitaryShips = 0;
            foreach (string key in factionMilitaryShipsPresent.Keys)
            {
                if (factionMilitaryShipsPresent[key] > mostMilitaryShips)
                {
                    returnValue       = key;
                    mostMilitaryShips = factionMilitaryShipsPresent[key];
                }
            }
        }
        else
        {
            foreach (Collider2D collider in attachedSensors.NearbyColliders)
            {
                if (collider != null)
                {
                    if (collider.gameObject.layer == 9)
                    {
                        if (tag.Equals(collider.tag))
                        {
                            returnValue = null;
                            break;
                        }
                        else if (RelationshipManager.AreFactionsInWar(tag, collider.tag))
                        {
                            if (returnValue == null || returnValue.Equals(collider.tag))
                            {
                                returnValue = collider.tag;
                            }
                            else
                            {
                                returnValue = null;
                                break;
                            }
                        }
                    }
                }
            }
        }

        return(returnValue);
    }
Beispiel #5
0
    private void Update()
    {
        if (Time.time >= targetUpdateTimer)
        {
            targetUpdateTimer += targetUpdateTime;

            float closestEnemy  = float.MaxValue;
            bool  foundOneEnemy = false;

            if (aiAttributes.AttachedSensors.EnemyNearby)
            {
                foreach (Collider2D collider in aiAttributes.AttachedSensors.NearbyColliders)
                {
                    if (collider != null)
                    {
                        if (RelationshipManager.AreFactionsInWar(collider.tag, gameObject.tag))
                        {
                            float distanceToCollider = Vector2.Distance(transform.position, collider.transform.position);
                            if (Target == null || closestEnemy > distanceToCollider)
                            {
                                Target        = collider;
                                closestEnemy  = distanceToCollider;
                                foundOneEnemy = true;
                            }
                        }
                    }
                }
            }

            if (!foundOneEnemy)
            {
                Target = null;
            }
        }

        // If we have a target rotate the turret to face target, and shoot
        if (Target != null)
        {
            float angleToTarget = Utilities.angleToTarget(gameObject, Target.transform.position);
            if (Mathf.Abs(angleToTarget) < 3)
            {
                attachedTurret.FireTurret();
            }
            else
            {
                rotateTurret(angleToTarget);
            }
            // If we do not have a target, face the turret forwards
        }
        else
        {
            if (aiAttributes.AttachedShip != null)
            {
                float angleForwards = Utilities.angleToTarget(gameObject, aiAttributes.AttachedShip.transform.position + aiAttributes.AttachedShip.transform.up);
                if (Mathf.Abs(angleForwards) > 1)
                {
                    rotateTurret(angleForwards);
                }
            }
        }
    }