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; } }