using System.Collections; using System.Reflection; using log4net; using Managers; using SlimUI.ModernMenu; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.SceneManagement; public class PauseMenu : MonoBehaviour { private static ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private Canvas Canvas; public GameObject Camera; public GameObject UIEventSystem; public GameObject PauseMenuButtons; public GameObject ExitConfirmDialog; public GameObject FocusButtonExitConfirm; public GameObject FocusButtonPause; private EventSystem eventSystem; // Start is called before the first frame update void Awake() { Canvas = gameObject.GetComponent(); Canvas.enabled = false; PauseMenuButtons.SetActive(false); eventSystem = UIEventSystem.GetComponent(); UIEventSystem.SetActive(false); } public void Show(Transform transform) { gameObject.transform.position = transform.position; gameObject.transform.rotation = transform.rotation; Canvas.enabled = true; Camera.transform.position = MatchManager.G.MatchCamera.transform.position; Camera.transform.rotation = MatchManager.G.MatchCamera.transform.rotation; Camera.SetActive(true); UIEventSystem.SetActive(true); PauseMenuButtons.SetActive(true); ExitConfirmDialog.SetActive(false); eventSystem.SetSelectedGameObject(FocusButtonPause, null); } public void Hide() { Canvas.enabled = false; Camera.SetActive(false); UIEventSystem.SetActive(false); } public void OnContinue() { MatchManager.G.PausePressed(); } public void OnMainMenu() { UIManager.G.MatchMusic.FadeOutAudio(0.3f, true); StartCoroutine(StartSceneTransition()); } private IEnumerator StartSceneTransition() { Canvas.enabled = false; SceneManager.LoadScene((int)Scenes.MainMenu, LoadSceneMode.Additive); yield return new WaitForSeconds(0.2f); GameObject menu = GameObject.Find("Main Menu Camera"); if (menu != null && menu.TryGetComponent(out SlimUIMainMenu menuScript)) { UIManager.G.HideHUD(); menuScript.MenuTransition(Camera.GetComponent().transform); } else { Log.Error("Can't transition back to main menu. Menu camera or script not found."); } } public void OnExit() { PauseMenuButtons.SetActive(false); ExitConfirmDialog.SetActive(true); eventSystem.SetSelectedGameObject(FocusButtonExitConfirm, null); } public void OnConfirmedExit() { #if UNITY_EDITOR UnityEditor.EditorApplication.isPlaying = false; #else Application.Quit(); #endif } public void OnBackToPauseMenu() { PauseMenuButtons.SetActive(true); ExitConfirmDialog.SetActive(false); eventSystem.SetSelectedGameObject(FocusButtonPause, null); } }