using UnityEngine; using UnityEngine.UI; public class PauseMenuPopup : PopupBase { [Header("Buttons")] [SerializeField] private Button homeBtn; [SerializeField] private Button playBtn; [SerializeField] private Button restartBtn; private UIManager uiManager; private SoundManager soundManager; private GameModeHandler gameModeHandler; private void OnEnable() { playBtn.onClick.AddListener(OnClick_PlayButton); homeBtn.onClick.AddListener(OnClick_HomeButton); restartBtn.onClick.AddListener(OnClick_RestartButton); } private void OnDisable() { playBtn.onClick.RemoveListener(OnClick_PlayButton); homeBtn.onClick.RemoveListener(OnClick_HomeButton); restartBtn.onClick.RemoveListener(OnClick_RestartButton); } private void OnClick_PlayButton() { SetUIManager(); uiManager.GameManager.SetGameState(GameState.InGame); soundManager = soundManager == null ? InterfaceManager.Instance?.GetInterfaceInstance() : soundManager; soundManager?.PlayGameSoundClip(SoundType.ButtonClick); popupManager.HidePopup(popupType); ScreenManager screenManager = InterfaceManager.Instance?.GetInterfaceInstance(); screenManager.ShowScreen(ScreenType.InGameHUDScreen); SetGameModeHandler(); gameModeHandler.GameplayManager.OnGameResumed?.Invoke(); } private void OnClick_HomeButton() { soundManager = soundManager == null ? InterfaceManager.Instance?.GetInterfaceInstance() : soundManager; soundManager?.PlayGameSoundClip(SoundType.ButtonClick); popupManager.HidePopup(popupType); SetUIManager(); uiManager.GameManager.OnGameStateChanged(GameState.InMenu); } private void SetUIManager() { uiManager = uiManager == null ? InterfaceManager.Instance?.GetInterfaceInstance() : uiManager; } private void OnClick_RestartButton() { popupManager.HidePopup(popupType); SetGameModeHandler(); gameModeHandler.OnGameRestarted(); } private void SetGameModeHandler() { gameModeHandler = gameModeHandler == null ? InterfaceManager.Instance.GetInterfaceInstance() : gameModeHandler; } }