49 lines
1.9 KiB
C#
49 lines
1.9 KiB
C#
using Player.Movement;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UIElements;
|
|
|
|
public class UIEvents : MonoBehaviour
|
|
{
|
|
private UIDocument _document;
|
|
private ProgressBar _stamina;
|
|
private float CurrentStamina = 100f;
|
|
private float timer = 0f;
|
|
[SerializeField] private PlayerMovementController _playerMovementController;
|
|
[SerializeField] private float _staminaDepletionMultiplier;
|
|
[SerializeField] private float _staminaRecoveryMultiplier;
|
|
public float delay = 3;
|
|
|
|
private void Awake()
|
|
{
|
|
_document = GetComponent<UIDocument>();
|
|
_stamina = _document.rootVisualElement.Q<ProgressBar>("Stamina");
|
|
_stamina.value = CurrentStamina; // set starting value of stamina
|
|
}
|
|
private void Update()//petla update
|
|
{
|
|
if (Input.GetKey(KeyCode.LeftShift))//if shift is pressed
|
|
{
|
|
timer = 0f;//timer is set to 0
|
|
CurrentStamina =Mathf.Max(0,CurrentStamina - Time.deltaTime * _staminaDepletionMultiplier);//stamina began to deplet
|
|
if (CurrentStamina <=0)//if current stamina is lower or equal to 0
|
|
{
|
|
_playerMovementController.StopSprint();//use function from another class
|
|
}
|
|
}
|
|
else if(CurrentStamina < 100)//and also when current stamina is lower than 100
|
|
{
|
|
timer += Time.deltaTime;//timer starts working
|
|
if (timer > delay )//when timer is greater than delay time
|
|
{
|
|
CurrentStamina = Mathf.Min(100f, CurrentStamina + Time.deltaTime * _staminaRecoveryMultiplier);//stamina began to recover
|
|
if (CurrentStamina >= 100f)//on top of that if timer is greater or equal 100
|
|
{
|
|
timer = 0f;//set timer to 0
|
|
}
|
|
}
|
|
}
|
|
_stamina.value = CurrentStamina;//set stamina value to current stamina
|
|
}
|
|
} |