using Mirror; using UnityEngine; using UnityEngine.UI; public class NOSController : NetworkBehaviour { [SerializeField] private float _currentNOS = 0f; [SerializeField] private float _chargeSpeed = 1f; [SerializeField] private float _depletionSpeed = 1f; [SerializeField] private float _boostAcceleration = 40f; [SerializeField] private float _audioVolume = 0.5f; [SerializeField] private AudioSource _boostAudio = null; public bool _isBoosting = false; private VehicleController _vehicleHandler = null; private MotionBlur _cameraMotionBlur; public float NOSRatio => _currentNOS / 100f; public Image _boostBarFill; //private NetworkIdentity identity; public override void OnStartLocalPlayer() { Debug.Log("isLocalPlayer"); _boostBarFill = GameUIManager.Instance.boostBarFill; GameUIManager.Instance.boostButton.onClick.RemoveAllListeners(); GameUIManager.Instance.boostButton.onClick.AddListener(ActivateNOS); } private void Awake() { _vehicleHandler = GetComponent(); _cameraMotionBlur = Camera.main.GetComponent(); if (_boostAudio != null) { _boostAudio.playOnAwake = false; _boostAudio.loop = true; _boostAudio.volume = _audioVolume; } } private void Update() { if (!isLocalPlayer || _vehicleHandler.AIControlled) return; Debug.Log("NosController Local"); if (!_isBoosting) { if (Mathf.Abs(_vehicleHandler.LocalVelocity.x) > 10f && _currentNOS < 100f) { _currentNOS += Time.deltaTime * (_chargeSpeed * _vehicleHandler.LocalVelocity.z / 30f); _boostBarFill.fillAmount = _currentNOS / 100f; } } else { if (_vehicleHandler.InputsActive) { _currentNOS -= Time.deltaTime * _depletionSpeed; _boostBarFill.fillAmount = _currentNOS / 100f; } if (_currentNOS <= 0f) _isBoosting = false; } ManageBoost(); } private void ManageBoost() { if (_isBoosting && _vehicleHandler.InputsActive && _vehicleHandler.Running) { if (_cameraMotionBlur != null) _cameraMotionBlur.enabled = true; } else { if (_cameraMotionBlur != null) _cameraMotionBlur.enabled = false; _vehicleHandler.ActivateNOS(false); } } public void ActivateNOS() { if (_isBoosting || _currentNOS <= 0f) return; _isBoosting = true; _vehicleHandler.ActivateNOS(_isBoosting, _boostAcceleration); } }