using System.Numerics; using System; using DG.Tweening; using UnityEngine; public enum PopupType { Pause, GameOver, Options, HighScore, Instruction } public enum PopupScalerType { None, Zoom, Fade } public class PopupBase : UIBase, IUIBase { [SerializeField] protected PopupType popupType; [SerializeField] protected bool hasBackOption = false; private Action onComplete; public PopupType PopupType => popupType; public bool HasBackOption => hasBackOption; protected PopupManager popupManager; private UIScaler uiScaler; public override void Show() { SetUIScaler(); if (uiScaler) { uiScaler.ApplyEffectOnShow(() => base.Show()); uiScaler.ActivateCanvasGroup(true); } else base.Show(); } private void SetUIScaler() { uiScaler = uiScaler == null ? GetComponent() : uiScaler; } public override void Hide() { if (uiScaler) { uiScaler.ApplyEffectOnHide(() => base.Hide()); uiScaler.ActivateCanvasGroup(false); } else base.Hide(); } public void Initialize() { popupManager = popupManager == null ? InterfaceManager.Instance?.GetInterfaceInstance() : popupManager; popupManager.RegisterPopup(this); } public void InitNextActionEvent(Action onComplete) { this.onComplete = onComplete; } protected void OnComplete(PopupResultEvent popupResultEvent) { onComplete?.Invoke(popupResultEvent); } private void OnDestroy() { onComplete = null; } }