using System; using Core; using PermanentSystems; using Systems; using UnityEngine; using UnityEngine.UI; using Application = Core.Application; namespace Panels { public class PauseScreenPanel : PanelBase { [SerializeField] private Button continueBtn; [SerializeField] private Button settingsBtn; [SerializeField] private Button exitBtn; [SerializeField] private Button hintsBtn; [SerializeField] [TextArea] private string hintMessage; private HUDPanel _hudPanel; private HUDPanel HudPanel { get { if (_hudPanel == null) _hudPanel = Application.GetPanel(); return _hudPanel; } } private SettingsPanel _settingsPanel; private SettingsPanel SettingsPanel { get { if (_settingsPanel == null) _settingsPanel = Application.GetPanel(); return _settingsPanel; } } private HintsPanel _hintPanel; private HintsPanel HintsPanel { get { if (_hintPanel == null) _hintPanel = Application.GetPanel(); return _hintPanel; } } private GameManager _manager; private GameManager GameManager { get { if (_manager == null) _manager = Application.GetSystem(); return _manager; } } protected override void ReleaseReferences() { base.ReleaseReferences(); _manager = null; _hudPanel = null; continueBtn = null; } public override void Initialize() { continueBtn.onClick.AddListener(ContinueGame); hintsBtn.onClick.AddListener(ShowMovementHint); settingsBtn.onClick.AddListener(() => SettingsPanel.OpenPanel()); exitBtn.onClick.AddListener(Application.ExitApp); } public override void OpenPanel(Action callBack = null) { HudPanel.ClosePanelImmediately(); base.OpenPanel(callBack); } private void ContinueGame() { AudioSystem.PlaySoundEffect(AudioList.ButtonClickA); ClosePanel(GameManager.ResumeGame); HudPanel.OpenPanel(); } private void ShowMovementHint() { AudioSystem.PlaySoundEffect(AudioList.ButtonClickA); HintsPanel.ShowHint(hintMessage); } } }