UnityGameProjectsCode / InTheDarkGame / Player / Barrier Mech / BarrierTool.cs
BarrierTool.cs
Raw
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;
    }
}