| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- using UnityEngine;
- using TMPro;
- using UnityEngine.SceneManagement;
- public class GameManager : MonoBehaviour
- {
- public static GameManager Instance; // Allows other scripts to find this one easily
- [Header("Game Settings")]
- public int totalOrbsToWin = 20;
- public float timeRemaining = 300f; // 5 minutes in seconds
- [Header("UI References")]
- public TextMeshProUGUI orbText;
- public TextMeshProUGUI timerText;
- private int currentOrbs = 0;
- private bool isGameOver = false;
- void Awake()
- {
- // Singleton pattern: ensures only one GameManager exists
- if (Instance == null) Instance = this;
- else Destroy(gameObject);
- }
- void Update()
- {
- if (isGameOver) return;
- // Handle Timer
- if (timeRemaining > 0)
- {
- timeRemaining -= Time.deltaTime;
- UpdateTimerUI();
- }
- else
- {
- GameOver(false); // Timer ran out
- }
- }
- public void AddOrb()
- {
- currentOrbs++;
- UpdateOrbUI();
- if (currentOrbs >= totalOrbsToWin)
- {
- GameOver(true); // Collected all orbs
- }
- }
- void UpdateOrbUI()
- {
- orbText.text = "Orbs: " + currentOrbs + " / " + totalOrbsToWin;
- }
- void UpdateTimerUI()
- {
- float minutes = Mathf.FloorToInt(timeRemaining / 60);
- float seconds = Mathf.FloorToInt(timeRemaining % 60);
- timerText.text = string.Format("Time: {0:00}:{1:00}", minutes, seconds);
- }
- void GameOver(bool won)
- {
- isGameOver = true;
- if (won) Debug.Log("VICTORY! All orbs collected.");
- else Debug.Log("GAME OVER! Night has fallen.");
- // Later we will trigger Victory/Loss screens here
- }
- }
|