using UnityEngine; public class BarrierTool : MonoBehaviour { //on a key press, the barrier will activate around the player. The barrier has a set amount of use per level. //the barrier should act like a wall and block any ray traces to the player so that they will not be affected by the lights. //the barrier should also stop spotting lights from marking the player. private KeyCode enableBarrierKey; public float barrierRadius; private float barrierCharge; private bool barrierUpgraded; public float barrierMaxCharge; public GameObject barrierPrefab; public GameObject barrierPrefabUpgraded; private void Awake() { barrierPrefab.transform.localScale = new Vector3(barrierRadius, barrierRadius); barrierPrefabUpgraded.transform.localScale = new Vector3(barrierRadius, barrierRadius); barrierCharge = barrierMaxCharge; if (ProgressTracker.GetGoodEndingTriggered()) SetBarrierUpgradeState(true); enableBarrierKey = InputManager.GetInputKey(6); barrierPrefab.SetActive(false); barrierPrefabUpgraded.SetActive(false); } private void Update() { if (!barrierUpgraded) { if (barrierCharge <= 0 && barrierPrefab.activeSelf) barrierPrefab.SetActive(false); } else { if (barrierCharge <= 0 && barrierPrefabUpgraded.activeSelf) barrierPrefabUpgraded.SetActive(false); } if (Input.GetKeyDown(enableBarrierKey) && barrierCharge > 0) { ChangeBarrierState(); } } public void ChangeBarrierState() { if(!barrierUpgraded) barrierPrefab.SetActive(!barrierPrefab.activeSelf); else barrierPrefabUpgraded.SetActive(!barrierPrefabUpgraded.activeSelf); } public void ModifyBarrierCharge(float modifier) { if (!barrierUpgraded) barrierCharge += modifier; else barrierCharge += modifier / 40; } public float GetCurrentBarrierCharge() { return barrierCharge; } public void SetNewKey() { enableBarrierKey = InputManager.GetInputKey(6); } public void SetBarrierUpgradeState(bool state) { barrierUpgraded = state; barrierCharge = barrierMaxCharge; } public bool GetBarrierUpgradeState() { return barrierUpgraded; } }