Skip to main content

CaptureController

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

namespace Steijn
{
    public class CaptureControllerAlphaL3 : MonoBehaviour
    {
        [Header("RayInfo")]
        [SerializeField]
        private float m_Range = 100f;
        [SerializeField]
        private Camera m_PlayerCam;

        [Header("CaptureInfo")]
        [SerializeField]
        private GameObject m_PressEText;

        [Header("TimeSettings")]
        [SerializeField]
        private float m_StartTime = 60;
        [SerializeField]
        private float m_CurrentTime;
        [SerializeField]
        private Vector2 m_MinMaxTime = new Vector2(0f, 60f);
        [SerializeField]
        private GameObject m_TimerText;
        [SerializeField]
        private Text m_TimeLeft;

        [Header("BoolInfo")]
        [SerializeField]
        private bool m_AllowPressE = false;

        void Start()
        {
            m_CurrentTime = m_StartTime;
        }

        void Update()
        {
            RaycastHit hit;
            if (Physics.Raycast(m_PlayerCam.transform.position, m_PlayerCam.transform.forward, out hit, m_Range))
            {
                Debug.Log(hit.transform.name);
            }

            if (hit.transform != null)
            {
                if (hit.transform.name == "Computer" && FindObjectOfType<CaptureZoneL3>().m_PlayerInsideCapture == true)
                {
                    if (m_TimerText.activeSelf == false)
                    {
                        m_PressEText.SetActive(true);
                    }

                    if (Input.GetKeyDown(KeyCode.E))
                    {
                        m_PressEText.SetActive(false);
                        m_TimerText.SetActive(true);
                        FindObjectOfType<CaptureZoneL3>().m_AllowCountDown = true;
                    }
                }

                if (hit.transform.name != "Computer")
                {
                    m_PressEText.SetActive(false);
                }

                if (FindObjectOfType<CaptureZoneL3>().m_AllowCountDown == true)
                {
                    if (m_CurrentTime >= m_MinMaxTime.x)
                        m_CurrentTime -= 1f * Time.deltaTime;
                    WriteText();
                }
                if (FindObjectOfType<CaptureZoneL3>().m_AllowCountDown == false && m_TimerText.activeSelf == true)
                {
                    if (m_CurrentTime <= m_MinMaxTime.y)
                        m_CurrentTime += 1f * Time.deltaTime;
                    WriteText();
                }
            }
        }

        private void WriteText()
        {
            m_TimeLeft.text = System.Math.Round(m_CurrentTime) + " Seconds Left";
        }
    }
}