using UnityEngine; using TMPro; using UnityEngine.SceneManagement; public class PlayerStats : MonoBehaviour { float curHealth; [SerializeField] float maxHealth = 100; float curFuel; [SerializeField] float maxFuel = 100; float curTime; [SerializeField] float timeLimit = 300; // in seconds [SerializeField] TextMeshProUGUI healthText, fuelText, timeText; void Start() { curHealth = maxHealth; curFuel = maxFuel; curTime = timeLimit; healthText.text = "Health: " + curHealth.ToString("F0"); fuelText.text = "Fuel: " + curFuel.ToString("F0"); timeText.text = "Time: " + timeLimit.ToString("F0"); } void Update() { if (curTime > 0) { curTime -= 1 * Time.deltaTime; int minutes = Mathf.FloorToInt(curTime / 60F); int seconds = Mathf.FloorToInt(curTime - minutes * 60); timeText.text = string.Format("{0:0}:{1:00}", minutes, seconds); } else { curTime = 0; Destroy(gameObject); ReloadLevel(); } } public void TakeDamage(int damage) { curHealth -= damage; healthText.text = "Health: " + curHealth.ToString("F0"); if (curHealth <= 0) { curHealth = 0; Destroy(gameObject); ReloadLevel(); } } public void UseFuel(float amount) { curFuel -= amount; fuelText.text = "Fuel: " + curFuel.ToString("F0"); if (curFuel <= 0) { curFuel = 0; Destroy(gameObject); ReloadLevel(); } } public void StopTime() { curTime = 0; timeText.text = "0:00"; } public void AddTime(float amount) { curTime += amount; int minutes = Mathf.FloorToInt(curTime / 60F); int seconds = Mathf.FloorToInt(curTime - minutes * 60); timeText.text = string.Format("{0:0}:{1:00}", minutes, seconds); } void ReloadLevel() { int currentSceneIndex = SceneManager.GetActiveScene().buildIndex; SceneManager.LoadScene(currentSceneIndex); } public void NextLevel() { int currentSceneIndex = SceneManager.GetActiveScene().buildIndex; int nextSceneIndex = currentSceneIndex + 1; if (nextSceneIndex == SceneManager.sceneCountInBuildSettings) { nextSceneIndex = 0; } SceneManager.LoadScene(nextSceneIndex); } }