83 lines
1.7 KiB
C#
Raw Permalink Normal View History

2026-01-05 12:16:58 +05:30
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<PopupResultEvent> 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>() : 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;
popupManager.RegisterPopup(this);
}
public void InitNextActionEvent(Action<PopupResultEvent> onComplete)
{
this.onComplete = onComplete;
}
protected void OnComplete(PopupResultEvent popupResultEvent)
{
onComplete?.Invoke(popupResultEvent);
}
private void OnDestroy()
{
onComplete = null;
}
}