-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPopupBase.cs
More file actions
136 lines (129 loc) · 4.25 KB
/
Copy pathPopupBase.cs
File metadata and controls
136 lines (129 loc) · 4.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
using Sirenix.OdinInspector;
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using VTLTools.UIAnimation;
using VTLTools;
using DP.Utilities;
namespace AntiStress.UI
{
public class PopupBase : MonoBehaviour
{
[SerializeField, BoxGroup("Popup Reference")] protected Button closeButton;
private MenuAnimationControl menuAnimationControl;
protected MenuAnimationControl ThisMenuAnimationControl
{
get
{
if (menuAnimationControl == null)
menuAnimationControl = GetComponent<MenuAnimationControl>();
return menuAnimationControl;
}
}
protected System.Action actionOnStartShow, actionOnCompleteShow, actionOnStartHide, actionOnCompleteHide;
protected object data;
public bool IsShow
{
get
{
return this.gameObject.activeSelf;
}
}
#region SHOW
public virtual void Show(object _data = null, float _delay = 0f, bool _hasAnimation = true, Action _actionOnStartShow = null, Action _actionOnCompleteShow = null, Action _actionOnStartHide = null, Action _actionOnCompleteHide = null)
{
if (IsShow)
return;
this.data = _data;
this.actionOnStartShow = _actionOnStartShow;
this.actionOnCompleteShow = _actionOnCompleteShow;
this.actionOnStartHide = _actionOnStartHide;
this.actionOnCompleteHide = _actionOnCompleteHide;
this.Init();
ButtonAddListener();
if (ThisMenuAnimationControl == null || !_hasAnimation)
{
this.gameObject.SetActive(true);
OnShowStarted();
OnShowCompleted();
}
else
{
this.gameObject.SetActive(true);
ThisMenuAnimationControl.StartShow(_delay, _onShowStarted: OnShowStarted, _onShowCompleted: OnShowCompleted);
}
}
protected virtual void OnShowStarted()
{
this.actionOnStartShow?.Invoke();
}
protected virtual void OnShowCompleted()
{
this.actionOnCompleteShow?.Invoke();
}
[Button, BoxGroup("UI preview")]
public void PreviewShow()
{
foreach (var _item in ThisMenuAnimationControl.menuItems)
{
_item.PreviewShow();
}
}
#endregion
#region HIDE
public virtual void Hide(bool _hasAnimation = true)
{
if (!IsShow)
return;
ButtonRemoveListener();
if (ThisMenuAnimationControl == null || !_hasAnimation)
{
OnHideStarted();
OnHideCompleted();
PreviewHide();
}
else
{
ThisMenuAnimationControl.StartHide(0f, _onHideStarted: OnHideStarted, _onHideCompleted: OnHideCompleted);
}
}
protected virtual void OnHideStarted()
{
this.actionOnStartHide?.Invoke();
}
protected virtual void OnHideCompleted()
{
this.actionOnCompleteHide?.Invoke();
this.gameObject.SetActive(false);
}
[Button, BoxGroup("UI preview")]
public void PreviewHide()
{
foreach (var _item in ThisMenuAnimationControl.menuItems)
{
_item.PreviewHide();
}
}
#endregion
protected virtual void Init()
{
}
protected virtual void ButtonAddListener()
{
closeButton?.onClick.AddListener(OnCloseClick);
}
protected virtual void ButtonRemoveListener()
{
closeButton?.onClick.RemoveListener(OnCloseClick);
}
protected virtual void OnCloseClick()
{
if (!IsShow)
return;
this.Hide();
SoundSystem.Instance?.PlayUIClick();
VibrationSystem.Instance?.PlayVibration();
}
}
}