UnityGameProjectsCode / RelianceGame / Player Control / PlayerCallForHelp.cs
PlayerCallForHelp.cs
Raw
using System.Collections.Generic;
using UnityEngine;

public class PlayerCallForHelp : MonoBehaviour
{
    private List<GameObject> friendlyBots = new List<GameObject>();
    public int reinforcementRadius;
    private GameObject enemyObject = null;
    private DisplayLog dLog;

    private void Awake()
    {
        dLog = GameObject.Find("RunningUI/Text Log/Log Panel/Content").GetComponent<DisplayLog>();

        foreach (GameObject friendly in GameObject.FindGameObjectsWithTag("Target"))
        {
            if (friendly.GetComponent<AIMachine>())
            {
                friendlyBots.Add(friendly);
            }
        }
    }

    public void OnShotGetEnemy(GameObject enemy)
    {
        enemyObject = enemy;
    }

    public void SetEnemyNull()
    {
        enemyObject = null;
    }

    private void Update()
    {
        if (Input.GetButtonDown("Call for Help") && enemyObject != null)
        {
            OnCallForHelp();
        }

        if (Input.GetButtonDown("Call for Help") && enemyObject == null)
        {
            dLog.RecieveLog("Cannot call for help, not currently engaging an enemy.");
        }
    }

    public void OnCallForHelp()
    {
        int numberOfBotsCalled = 0;

        for (int i = 0; i < 3; i++)
        {
            if (Vector3.Distance(transform.position, friendlyBots[i].transform.position) <= reinforcementRadius)
            {
                if (friendlyBots[i].GetComponent<AIMachine>().enemyObject == null)
                {
                    friendlyBots[i].GetComponent<AIMachine>().enemyObject = enemyObject;
                    friendlyBots[i].GetComponent<AIMachine>().canSeeEnemy = true;
                    numberOfBotsCalled++;
                }
            }
        }

        if (numberOfBotsCalled == 0)
            dLog.RecieveLog("No bots are in range to reinforce you.");
        else
            dLog.RecieveLog(numberOfBotsCalled + " bot(s) have been called to help you.");
    }

    public int GetReinforcementRadius()
    {
        return reinforcementRadius;
    }

    public void SetReinforcementRadius(int radius)
    {
        reinforcementRadius = radius;
    }

    public GameObject GetEnemy()
    {
        return enemyObject;
    }
}