Example #1
0
    private static float RangeScore(GameObject obj)
    {
        AttackerController atc = obj.GetComponent <AttackerController>();
        SentryController   sc  = obj.GetComponent <SentryController>();

        if (atc)
        {
            return(atc.HoldRange);
        }
        else if (sc)
        {
            return(sc.AttackRange / 4f); // Since they can't move, they effectively have sagnificantly reduced range. Number is magic LOL
        }
        return(0f);
    }
Example #2
0
    // Update is called once per frame
    void Update()
    {
        enemyCooldown = enemyCooldown == 0 ? 0 : enemyCooldown - 1;

        if (!loaded)
        {
            List <Enemy> temp = new List <Enemy>(enemies);
            for (int i = 0; i < temp.Count; i++)
            {
                if (temp[i].Progress())
                {
                    if (isBase)
                    {
                        enemies.Remove(temp[i]);
                        GameObject.FindWithTag("GameController").GetComponent <GameManager>().DamageBase(1);
                    }
                    else
                    {
                        Room destRoom = upRooms[temp[i].GetPathTo()];

                        if (destRoom.isBase)
                        {
                            enemies.Remove(temp[i]);
                            temp[i].SetPath(5 - temp[i].GetPathTo(), 1);
                            destRoom.AddEnemy(temp[i]);
                            temp[i].ResetProgress();
                        }
                        else
                        {
                            int tries = 1000;
                            while (true && tries-- > 0)
                            {
                                int r = Random.Range(0, 3);
                                if (destRoom.GetUpRoom(r))
                                {
                                    enemies.Remove(temp[i]);
                                    temp[i].SetPath(5 - temp[i].GetPathTo(), r);
                                    destRoom.AddEnemy(temp[i]);
                                    temp[i].ResetProgress();
                                    break;
                                }
                            }

                            if (tries < 0)
                            {
                                Debug.Log("failure move");
                            }
                        }
                    }
                }
            }

            //shot
            foreach (SentryController s in sentries)
            {
                if (enemies.Count > 0)
                {
                    if (s.ShootAt(Vector3.zero))
                    {
                        enemies[0].Damage(5);
                        if (!enemies[0].IsAlive())
                        {
                            player.GetComponent <PlayerController>().ChangeAmmo(enemies[0].GetPrize());
                            enemies.RemoveAt(0);
                        }
                    }
                }
            }
        }
        else
        {
            if (Input.GetKeyDown(KeyCode.E) && player.GetComponent <PlayerController>().GetAmmo() >= SentryController.GetPrice())
            {
                GetComponent <AudioSource>().PlayOneShot(sentryBuildSound, 1f);
                player.GetComponent <PlayerController>().ChangeAmmo(-SentryController.GetPrice());
                sentries.Add(Instantiate(sentry, player.transform.position, Quaternion.identity).GetComponent <SentryController>());
                minimap.SetSentry(layer, col);
            }

            Enemy target = null;
            for (int i = 0; i < enemies.Count; i++)
            {
                if (enemies[i].IsCollected())
                {
                    Destroy(enemies[i].gameObject);
                    player.GetComponent <PlayerController>().ChangeAmmo(enemies[i].GetPrize());
                    enemies.RemoveAt(i--);
                }
                else
                {
                    if (enemies[i].IsAlive() && !target)
                    {
                        target = enemies[i];
                    }
                    enemies[i].Move();
                }
            }
            foreach (SentryController s in sentries)
            {
                if (target)
                {
                    s.ShootAt(target.transform.position);
                }
            }
        }

        minimap.SetEnemy(layer, col, enemies.Count != 0);
    }
Example #3
0
    // Update is called once per frame
    void Update()
    {
        int playerHealth = player.GetHealth();
        int ammo         = player.GetAmmo();
        int currLayer    = boardManager.GetCurrLayer();
        int lowest       = boardManager.GetLowestLayer();

        uiText.text = "Base Health: " + baseHealth + "\nPlayer Health: " + playerHealth + "\nAmmo: " + ammo + "\nSentry Price: " + SentryController.GetPrice() + "\nCurrent Layer: " + currLayer + "\nLowest Layer: " + lowest;

        if (baseHealth <= 0 || playerHealth <= 0)
        {
            GameOver();
        }
    }