using UnityEngine; using UnityEngine.InputSystem; using System.Collections.Generic; public class GameManager : MonoBehaviour { public static GameManager Instance { get; private set; } [Header("Game State")] public bool isPaused = false; [Header("Systems")] public ResourceManager resourceManager; public TimeManager timeManager; public VillagerManager villagerManager; public SelectionManager selectionManager; void Awake() { // Singleton pattern if (Instance != null && Instance != this) { Destroy(gameObject); return; } Instance = this; DontDestroyOnLoad(gameObject); // Initialize systems InitializeSystems(); } void InitializeSystems() { // Get or create system components resourceManager = GetComponent(); if (resourceManager == null) resourceManager = gameObject.AddComponent(); timeManager = GetComponent(); if (timeManager == null) timeManager = gameObject.AddComponent(); villagerManager = GetComponent(); if (villagerManager == null) villagerManager = gameObject.AddComponent(); selectionManager = GetComponent(); if (selectionManager == null) selectionManager = gameObject.AddComponent(); } void Start() { // Initialize starting resources resourceManager.AddResource(ResourceType.Wood, 50); resourceManager.AddResource(ResourceType.Stone, 30); resourceManager.AddResource(ResourceType.Food, 100); } void Update() { // Handle pause/unpause if (UnityEngine.InputSystem.Keyboard.current.spaceKey.wasPressedThisFrame) { TogglePause(); } } public void TogglePause() { isPaused = !isPaused; timeManager.SetPaused(isPaused); } }