using ExitGames.Client.Photon; using Photon.Pun; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class GameManager : MonoBehaviour { public static GameManager Instance { get; set; } [Header("Settings")] public bool loadDefaultSettings; public bool autoSaveSettings; private Dictionary resources; [HideInInspector] public Settings settings; //Game values to be hold [HideInInspector] public List circuitAmounts; [HideInInspector] public int restPoints; void Awake() { //Manage Singleton if (Instance != null && Instance != this) Destroy(gameObject); else Instance = this; DontDestroyOnLoad(gameObject); SceneManager.sceneLoaded += OnSceneFinishedLoading; //Edit this resources = new Dictionary { {"Settings", Application.persistentDataPath + "/settings.dat"} }; Settings.fileName = "settings.dat"; if (loadDefaultSettings) settings = Settings.CreateDefault(); else settings = Settings.Load(resources["Settings"]); } private void OnSceneFinishedLoading(Scene scene, LoadSceneMode mode) { Debug.Log("Scene loaded: " + scene.name); if (scene.name == "Main") { CameraController.Instance.gameObject.SetActive(true); GUIController.Instance.state = MenuState.Lobby; GUIController.Instance.OpenMenu(); } PhotonNetwork.LocalPlayer.SetCustomProperties(new Hashtable() { ["CurrentScene"] = scene.buildIndex }); AudioManager.Instance.FadeMusicForScene(scene.buildIndex); } public void ApplySettings(Settings newSettings) { settings = newSettings; if (autoSaveSettings) Settings.Save(settings, resources["Settings"]); } public Button settingsButton; public GameObject settingsPanel; private void Update() { if (Input.GetKeyDown(KeyCode.Escape)) { OpenSettingsMenu(); } } private void OpenSettingsMenu() { if (SceneManager.GetActiveScene().name == "Main") { settingsButton.onClick.Invoke(); } else { settingsPanel.SetActive(true); } } }