net.dreditor.ui.menus 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.attestation.p7m +0 -0
- package/ChapterUIImage.cs +78 -78
- package/ChapterUIImage.cs.meta +11 -11
- package/ChapterUIText.cs +91 -91
- package/ChapterUIText.cs.meta +11 -11
- package/DREditor.UI.Menus.asmdef +27 -27
- package/DREditor.UI.Menus.asmdef.meta +7 -7
- package/ImageSelectHandler.cs +108 -108
- package/ImageSelectHandler.cs.meta +11 -11
- package/MainMenu.cs +230 -230
- package/MainMenu.cs.meta +11 -11
- package/PauseMenu.cs +323 -323
- package/PauseMenu.cs.meta +11 -11
- package/PauseOptionData.cs +55 -55
- package/PauseOptionData.cs.meta +11 -11
- package/PauseOptionSaveHandler.cs +81 -81
- package/PauseOptionSaveHandler.cs.meta +11 -11
- package/{Samples → Samples~}/Open_Pause_Menu_Conditions.prefab +106 -106
- package/{Samples → Samples~}/Open_Pause_Menu_Conditions.prefab.meta +7 -7
- package/{Samples → Samples~}/Pause_Option_Save_Handler.prefab +48 -48
- package/{Samples → Samples~}/Pause_Option_Save_Handler.prefab.meta +7 -7
- package/ScrollDescription.cs +259 -259
- package/ScrollDescription.cs.meta +11 -11
- package/TextColorSelect.cs +72 -72
- package/TextColorSelect.cs.meta +11 -11
- package/TextUIPositionPair.cs +24 -24
- package/TextUIPositionPair.cs.meta +11 -11
- package/TruthBulletMenu.cs +238 -238
- package/TruthBulletMenu.cs.meta +11 -11
- package/TruthBulletUnlockableOption.cs +30 -30
- package/TruthBulletUnlockableOption.cs.meta +11 -11
- package/package.json +50 -45
- package/package.json.meta +7 -7
- package/Samples.meta +0 -8
package/PauseMenu.cs
CHANGED
|
@@ -1,324 +1,324 @@
|
|
|
1
|
-
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
-
using DREditor.Audio;
|
|
3
|
-
using DREditor.EventObjects;
|
|
4
|
-
using DREditor.Services;
|
|
5
|
-
using DREditor.UIHandling;
|
|
6
|
-
using System.Collections;
|
|
7
|
-
using UnityEngine;
|
|
8
|
-
using UnityEngine.Events;
|
|
9
|
-
using UnityEngine.EventSystems;
|
|
10
|
-
using UnityEngine.InputSystem;
|
|
11
|
-
using UnityEngine.UI;
|
|
12
|
-
using static UnityEngine.InputSystem.InputAction;
|
|
13
|
-
|
|
14
|
-
namespace DREditor.UI.Menus
|
|
15
|
-
{
|
|
16
|
-
/// <summary>
|
|
17
|
-
///
|
|
18
|
-
/// </summary>
|
|
19
|
-
/// <remarks>
|
|
20
|
-
///
|
|
21
|
-
/// </remarks>
|
|
22
|
-
[ClassHeader("")]
|
|
23
|
-
public class PauseMenu : ServiceHolder<PauseMenu>, IToTitleScreen
|
|
24
|
-
{
|
|
25
|
-
/// <summary>
|
|
26
|
-
///
|
|
27
|
-
/// </summary>
|
|
28
|
-
[Tooltip("")]
|
|
29
|
-
[SerializeField] protected InputActionReference pause = null;
|
|
30
|
-
|
|
31
|
-
/// <summary>
|
|
32
|
-
///
|
|
33
|
-
/// </summary>
|
|
34
|
-
[Tooltip("")]
|
|
35
|
-
[SerializeField] protected InputActionReference cancel = null;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
/// <summary>
|
|
39
|
-
///
|
|
40
|
-
/// </summary>
|
|
41
|
-
[Header("")]
|
|
42
|
-
[Divider]
|
|
43
|
-
[Tooltip("")]
|
|
44
|
-
[SerializeField] protected PauseOptionData pauseData = null;
|
|
45
|
-
|
|
46
|
-
/// <summary>
|
|
47
|
-
///
|
|
48
|
-
/// </summary>
|
|
49
|
-
[Tooltip("")]
|
|
50
|
-
[SerializeField] protected SceneEvent onResumeFinished = null;
|
|
51
|
-
|
|
52
|
-
/// <summary>
|
|
53
|
-
///
|
|
54
|
-
/// </summary>
|
|
55
|
-
[Tooltip("")]
|
|
56
|
-
[SerializeField] protected BoolWithEvent pauseAccess = null;
|
|
57
|
-
|
|
58
|
-
/// <summary>
|
|
59
|
-
///
|
|
60
|
-
/// </summary>
|
|
61
|
-
[Tooltip("")]
|
|
62
|
-
[SerializeField] protected BoolWithEvent inMenu = null;
|
|
63
|
-
|
|
64
|
-
/// <summary>
|
|
65
|
-
///
|
|
66
|
-
/// </summary>
|
|
67
|
-
[Tooltip("")]
|
|
68
|
-
[SerializeField] protected BoolWithEvent inPause = null;
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
/// <summary>
|
|
72
|
-
///
|
|
73
|
-
/// </summary>
|
|
74
|
-
[Header("")]
|
|
75
|
-
[Divider]
|
|
76
|
-
[Tooltip("")]
|
|
77
|
-
[SerializeField] protected SelectableMenuGroupBase firstGroup = null;
|
|
78
|
-
|
|
79
|
-
/// <summary>
|
|
80
|
-
///
|
|
81
|
-
/// </summary>
|
|
82
|
-
[Tooltip("")]
|
|
83
|
-
[SerializeField] protected EvaluateCondition openPauseMenuCondition = null;
|
|
84
|
-
|
|
85
|
-
/// <summary>
|
|
86
|
-
///
|
|
87
|
-
/// </summary>
|
|
88
|
-
[Tooltip("")]
|
|
89
|
-
[SerializeField] protected UIVisibilityComponent pauseIntroVisibility = null;
|
|
90
|
-
|
|
91
|
-
/// <summary>
|
|
92
|
-
///
|
|
93
|
-
/// </summary>
|
|
94
|
-
[Tooltip("")]
|
|
95
|
-
[SerializeField] protected UIVisibilityComponent pauseVisibility = null;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
[Header("")]
|
|
99
|
-
[SerializeField] protected UnityEvent OnPauseMenuShow;
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
[Header("")]
|
|
103
|
-
[SerializeField] protected UnityEvent OnPauseMenuHide;
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
/// <summary>
|
|
107
|
-
///
|
|
108
|
-
/// </summary>
|
|
109
|
-
protected bool resuming = false;
|
|
110
|
-
|
|
111
|
-
/// <summary>
|
|
112
|
-
///
|
|
113
|
-
/// </summary>
|
|
114
|
-
protected bool fakeOverride = false;
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
/// <summary>
|
|
118
|
-
///
|
|
119
|
-
/// </summary>
|
|
120
|
-
protected virtual void OnEnable() => pauseAccess.AddListener(OnPauseAccessChanged);
|
|
121
|
-
|
|
122
|
-
/// <summary>
|
|
123
|
-
///
|
|
124
|
-
/// </summary>
|
|
125
|
-
protected virtual void OnDisable()
|
|
126
|
-
{
|
|
127
|
-
pauseAccess.RemoveListener(OnPauseAccessChanged);
|
|
128
|
-
|
|
129
|
-
pause.action.started -= Pause;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/// <summary>
|
|
133
|
-
///
|
|
134
|
-
/// </summary>
|
|
135
|
-
protected virtual void OnPauseAccessChanged(bool hasAccess)
|
|
136
|
-
{
|
|
137
|
-
if (hasAccess)
|
|
138
|
-
pause.action.started += Pause;
|
|
139
|
-
else
|
|
140
|
-
pause.action.started -= Pause;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
/// <summary>
|
|
145
|
-
///
|
|
146
|
-
/// </summary>
|
|
147
|
-
protected virtual void Pause(CallbackContext context)
|
|
148
|
-
{
|
|
149
|
-
if (!resuming && openPauseMenuCondition.Evaluate())
|
|
150
|
-
StartPause();
|
|
151
|
-
else if (resuming)
|
|
152
|
-
UnityEngine.Debug.Log("ANALYSIS: Failed to open the pause menu because the game was resuming.");
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/// <summary>
|
|
156
|
-
///
|
|
157
|
-
/// </summary>
|
|
158
|
-
public virtual void StartPause()
|
|
159
|
-
{
|
|
160
|
-
UnityEngine.Debug.Log("REPORT: " + nameof(PauseMenu) + ": Pausing.");
|
|
161
|
-
|
|
162
|
-
ServiceLocator.GetService<SoundManagerBase>().StopAllButMusic();
|
|
163
|
-
|
|
164
|
-
ServiceLocator.GetService<VOManagerBase>().StopVoiceLine();
|
|
165
|
-
|
|
166
|
-
inMenu.Value = true;
|
|
167
|
-
|
|
168
|
-
inPause.SetValue(true);
|
|
169
|
-
|
|
170
|
-
OnPauseMenuShow?.Invoke();
|
|
171
|
-
|
|
172
|
-
Time.timeScale = 0;
|
|
173
|
-
|
|
174
|
-
InitializePauseOptions();
|
|
175
|
-
|
|
176
|
-
if (pauseIntroVisibility != null)
|
|
177
|
-
pauseIntroVisibility.Show();
|
|
178
|
-
else
|
|
179
|
-
ShowPauseGroup();
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
/// <summary>
|
|
183
|
-
///
|
|
184
|
-
/// </summary>
|
|
185
|
-
protected virtual void InitializePauseOptions()
|
|
186
|
-
{
|
|
187
|
-
for (int i = 0; i < firstGroup.selectables.Count && i < pauseData.pauseOptions.Length; i++)
|
|
188
|
-
SetUnlockableOptionState(firstGroup.selectables[i], pauseData.pauseOptions[i]);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/// <summary>
|
|
192
|
-
///
|
|
193
|
-
/// </summary>
|
|
194
|
-
/// <param name="selectable"></param>
|
|
195
|
-
/// <param name="selectableUnlockState"></param>
|
|
196
|
-
protected virtual void SetUnlockableOptionState(Selectable selectable, bool selectableUnlockState)
|
|
197
|
-
{
|
|
198
|
-
if (selectable != null && selectable.gameObject.activeSelf != selectableUnlockState)
|
|
199
|
-
selectable.gameObject.SetActive(selectableUnlockState);
|
|
200
|
-
|
|
201
|
-
if (selectable != null && selectable.gameObject.GetComponent<IUnlockableUIOption>() is IUnlockableUIOption option)
|
|
202
|
-
selectable.gameObject.SetActive(option.IsUnlocked());
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/// <summary>
|
|
206
|
-
///
|
|
207
|
-
/// </summary>
|
|
208
|
-
/// <remarks></remarks>
|
|
209
|
-
public virtual void ShowPauseGroup()
|
|
210
|
-
{
|
|
211
|
-
pauseVisibility.Show();
|
|
212
|
-
|
|
213
|
-
if (fakeOverride)
|
|
214
|
-
return;
|
|
215
|
-
|
|
216
|
-
firstGroup.Show();
|
|
217
|
-
|
|
218
|
-
cancel.action.started += UnPause;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
/// <summary>
|
|
222
|
-
///
|
|
223
|
-
/// </summary>
|
|
224
|
-
/// <param name="context"></param>
|
|
225
|
-
protected virtual void UnPause(CallbackContext context)
|
|
226
|
-
{
|
|
227
|
-
if (firstGroup.isActive && !ServiceLocator.GetService<MenuState>().Changing)
|
|
228
|
-
Resume();
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
/// <summary>
|
|
232
|
-
///
|
|
233
|
-
/// </summary>
|
|
234
|
-
protected virtual void Resume()
|
|
235
|
-
{
|
|
236
|
-
UnityEngine.Debug.Log(nameof(PauseMenu) + ": Unpausing.");
|
|
237
|
-
|
|
238
|
-
cancel.action.started -= UnPause;
|
|
239
|
-
|
|
240
|
-
EventSystem.current.SetSelectedGameObject(null);
|
|
241
|
-
|
|
242
|
-
MenuGroupBase[] groups = GetComponentsInChildren<MenuGroupBase>();
|
|
243
|
-
|
|
244
|
-
foreach (MenuGroupBase group in groups)
|
|
245
|
-
group.RemoveBackInput();
|
|
246
|
-
|
|
247
|
-
HidePauseGroup();
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
/// <summary>
|
|
251
|
-
///
|
|
252
|
-
/// </summary>
|
|
253
|
-
/// <remarks></remarks>
|
|
254
|
-
public virtual void HidePauseGroup() => StartCoroutine(HidePauseGroupRoutine());
|
|
255
|
-
|
|
256
|
-
/// <summary>
|
|
257
|
-
///
|
|
258
|
-
/// </summary>
|
|
259
|
-
protected virtual IEnumerator HidePauseGroupRoutine()
|
|
260
|
-
{
|
|
261
|
-
resuming = true;
|
|
262
|
-
|
|
263
|
-
firstGroup.Hide();
|
|
264
|
-
|
|
265
|
-
OnPauseMenuHide?.Invoke();
|
|
266
|
-
|
|
267
|
-
if (pauseIntroVisibility != null)
|
|
268
|
-
{
|
|
269
|
-
pauseIntroVisibility.Hide();
|
|
270
|
-
|
|
271
|
-
yield return pauseIntroVisibility.WaitForChangeToComplete();
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
yield return new WaitForSecondsRealtime(Time.unscaledDeltaTime * 2);
|
|
275
|
-
|
|
276
|
-
if (pauseIntroVisibility == null)
|
|
277
|
-
pauseVisibility.Hide();
|
|
278
|
-
|
|
279
|
-
Time.timeScale = 1;
|
|
280
|
-
|
|
281
|
-
onResumeFinished.Raise();
|
|
282
|
-
|
|
283
|
-
resuming = false;
|
|
284
|
-
|
|
285
|
-
inMenu.Value = false;
|
|
286
|
-
|
|
287
|
-
inPause.SetValue(false);
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
/// <summary>
|
|
291
|
-
///
|
|
292
|
-
/// </summary>
|
|
293
|
-
/// <remarks></remarks>
|
|
294
|
-
public virtual void ShowFakePause()
|
|
295
|
-
{
|
|
296
|
-
fakeOverride = true;
|
|
297
|
-
|
|
298
|
-
if (pauseIntroVisibility != null)
|
|
299
|
-
pauseIntroVisibility.Show();
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
/// <summary>
|
|
303
|
-
///
|
|
304
|
-
/// </summary>
|
|
305
|
-
/// <remarks></remarks>
|
|
306
|
-
public virtual void HideFakePause()
|
|
307
|
-
{
|
|
308
|
-
fakeOverride = false;
|
|
309
|
-
|
|
310
|
-
if (pauseIntroVisibility != null)
|
|
311
|
-
pauseIntroVisibility.Hide();
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
/// <summary>
|
|
315
|
-
///
|
|
316
|
-
/// </summary>
|
|
317
|
-
/// <remarks></remarks>
|
|
318
|
-
public virtual void ResetPauseMenu() => Resume();
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
/// <inheritdoc/>
|
|
322
|
-
public virtual void ToTitleScreen() => cancel.action.started -= UnPause;
|
|
323
|
-
}
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using DREditor.Audio;
|
|
3
|
+
using DREditor.EventObjects;
|
|
4
|
+
using DREditor.Services;
|
|
5
|
+
using DREditor.UIHandling;
|
|
6
|
+
using System.Collections;
|
|
7
|
+
using UnityEngine;
|
|
8
|
+
using UnityEngine.Events;
|
|
9
|
+
using UnityEngine.EventSystems;
|
|
10
|
+
using UnityEngine.InputSystem;
|
|
11
|
+
using UnityEngine.UI;
|
|
12
|
+
using static UnityEngine.InputSystem.InputAction;
|
|
13
|
+
|
|
14
|
+
namespace DREditor.UI.Menus
|
|
15
|
+
{
|
|
16
|
+
/// <summary>
|
|
17
|
+
///
|
|
18
|
+
/// </summary>
|
|
19
|
+
/// <remarks>
|
|
20
|
+
///
|
|
21
|
+
/// </remarks>
|
|
22
|
+
[ClassHeader("")]
|
|
23
|
+
public class PauseMenu : ServiceHolder<PauseMenu>, IToTitleScreen
|
|
24
|
+
{
|
|
25
|
+
/// <summary>
|
|
26
|
+
///
|
|
27
|
+
/// </summary>
|
|
28
|
+
[Tooltip("")]
|
|
29
|
+
[SerializeField] protected InputActionReference pause = null;
|
|
30
|
+
|
|
31
|
+
/// <summary>
|
|
32
|
+
///
|
|
33
|
+
/// </summary>
|
|
34
|
+
[Tooltip("")]
|
|
35
|
+
[SerializeField] protected InputActionReference cancel = null;
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
/// <summary>
|
|
39
|
+
///
|
|
40
|
+
/// </summary>
|
|
41
|
+
[Header("")]
|
|
42
|
+
[Divider]
|
|
43
|
+
[Tooltip("")]
|
|
44
|
+
[SerializeField] protected PauseOptionData pauseData = null;
|
|
45
|
+
|
|
46
|
+
/// <summary>
|
|
47
|
+
///
|
|
48
|
+
/// </summary>
|
|
49
|
+
[Tooltip("")]
|
|
50
|
+
[SerializeField] protected SceneEvent onResumeFinished = null;
|
|
51
|
+
|
|
52
|
+
/// <summary>
|
|
53
|
+
///
|
|
54
|
+
/// </summary>
|
|
55
|
+
[Tooltip("")]
|
|
56
|
+
[SerializeField] protected BoolWithEvent pauseAccess = null;
|
|
57
|
+
|
|
58
|
+
/// <summary>
|
|
59
|
+
///
|
|
60
|
+
/// </summary>
|
|
61
|
+
[Tooltip("")]
|
|
62
|
+
[SerializeField] protected BoolWithEvent inMenu = null;
|
|
63
|
+
|
|
64
|
+
/// <summary>
|
|
65
|
+
///
|
|
66
|
+
/// </summary>
|
|
67
|
+
[Tooltip("")]
|
|
68
|
+
[SerializeField] protected BoolWithEvent inPause = null;
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
/// <summary>
|
|
72
|
+
///
|
|
73
|
+
/// </summary>
|
|
74
|
+
[Header("")]
|
|
75
|
+
[Divider]
|
|
76
|
+
[Tooltip("")]
|
|
77
|
+
[SerializeField] protected SelectableMenuGroupBase firstGroup = null;
|
|
78
|
+
|
|
79
|
+
/// <summary>
|
|
80
|
+
///
|
|
81
|
+
/// </summary>
|
|
82
|
+
[Tooltip("")]
|
|
83
|
+
[SerializeField] protected EvaluateCondition openPauseMenuCondition = null;
|
|
84
|
+
|
|
85
|
+
/// <summary>
|
|
86
|
+
///
|
|
87
|
+
/// </summary>
|
|
88
|
+
[Tooltip("")]
|
|
89
|
+
[SerializeField] protected UIVisibilityComponent pauseIntroVisibility = null;
|
|
90
|
+
|
|
91
|
+
/// <summary>
|
|
92
|
+
///
|
|
93
|
+
/// </summary>
|
|
94
|
+
[Tooltip("")]
|
|
95
|
+
[SerializeField] protected UIVisibilityComponent pauseVisibility = null;
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
[Header("")]
|
|
99
|
+
[SerializeField] protected UnityEvent OnPauseMenuShow;
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
[Header("")]
|
|
103
|
+
[SerializeField] protected UnityEvent OnPauseMenuHide;
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
/// <summary>
|
|
107
|
+
///
|
|
108
|
+
/// </summary>
|
|
109
|
+
protected bool resuming = false;
|
|
110
|
+
|
|
111
|
+
/// <summary>
|
|
112
|
+
///
|
|
113
|
+
/// </summary>
|
|
114
|
+
protected bool fakeOverride = false;
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
/// <summary>
|
|
118
|
+
///
|
|
119
|
+
/// </summary>
|
|
120
|
+
protected virtual void OnEnable() => pauseAccess.AddListener(OnPauseAccessChanged);
|
|
121
|
+
|
|
122
|
+
/// <summary>
|
|
123
|
+
///
|
|
124
|
+
/// </summary>
|
|
125
|
+
protected virtual void OnDisable()
|
|
126
|
+
{
|
|
127
|
+
pauseAccess.RemoveListener(OnPauseAccessChanged);
|
|
128
|
+
|
|
129
|
+
pause.action.started -= Pause;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/// <summary>
|
|
133
|
+
///
|
|
134
|
+
/// </summary>
|
|
135
|
+
protected virtual void OnPauseAccessChanged(bool hasAccess)
|
|
136
|
+
{
|
|
137
|
+
if (hasAccess)
|
|
138
|
+
pause.action.started += Pause;
|
|
139
|
+
else
|
|
140
|
+
pause.action.started -= Pause;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
/// <summary>
|
|
145
|
+
///
|
|
146
|
+
/// </summary>
|
|
147
|
+
protected virtual void Pause(CallbackContext context)
|
|
148
|
+
{
|
|
149
|
+
if (!resuming && openPauseMenuCondition.Evaluate())
|
|
150
|
+
StartPause();
|
|
151
|
+
else if (resuming)
|
|
152
|
+
UnityEngine.Debug.Log("ANALYSIS: Failed to open the pause menu because the game was resuming.");
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/// <summary>
|
|
156
|
+
///
|
|
157
|
+
/// </summary>
|
|
158
|
+
public virtual void StartPause()
|
|
159
|
+
{
|
|
160
|
+
UnityEngine.Debug.Log("REPORT: " + nameof(PauseMenu) + ": Pausing.");
|
|
161
|
+
|
|
162
|
+
ServiceLocator.GetService<SoundManagerBase>().StopAllButMusic();
|
|
163
|
+
|
|
164
|
+
ServiceLocator.GetService<VOManagerBase>().StopVoiceLine();
|
|
165
|
+
|
|
166
|
+
inMenu.Value = true;
|
|
167
|
+
|
|
168
|
+
inPause.SetValue(true);
|
|
169
|
+
|
|
170
|
+
OnPauseMenuShow?.Invoke();
|
|
171
|
+
|
|
172
|
+
Time.timeScale = 0;
|
|
173
|
+
|
|
174
|
+
InitializePauseOptions();
|
|
175
|
+
|
|
176
|
+
if (pauseIntroVisibility != null)
|
|
177
|
+
pauseIntroVisibility.Show();
|
|
178
|
+
else
|
|
179
|
+
ShowPauseGroup();
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/// <summary>
|
|
183
|
+
///
|
|
184
|
+
/// </summary>
|
|
185
|
+
protected virtual void InitializePauseOptions()
|
|
186
|
+
{
|
|
187
|
+
for (int i = 0; i < firstGroup.selectables.Count && i < pauseData.pauseOptions.Length; i++)
|
|
188
|
+
SetUnlockableOptionState(firstGroup.selectables[i], pauseData.pauseOptions[i]);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/// <summary>
|
|
192
|
+
///
|
|
193
|
+
/// </summary>
|
|
194
|
+
/// <param name="selectable"></param>
|
|
195
|
+
/// <param name="selectableUnlockState"></param>
|
|
196
|
+
protected virtual void SetUnlockableOptionState(Selectable selectable, bool selectableUnlockState)
|
|
197
|
+
{
|
|
198
|
+
if (selectable != null && selectable.gameObject.activeSelf != selectableUnlockState)
|
|
199
|
+
selectable.gameObject.SetActive(selectableUnlockState);
|
|
200
|
+
|
|
201
|
+
if (selectable != null && selectable.gameObject.GetComponent<IUnlockableUIOption>() is IUnlockableUIOption option)
|
|
202
|
+
selectable.gameObject.SetActive(option.IsUnlocked());
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/// <summary>
|
|
206
|
+
///
|
|
207
|
+
/// </summary>
|
|
208
|
+
/// <remarks></remarks>
|
|
209
|
+
public virtual void ShowPauseGroup()
|
|
210
|
+
{
|
|
211
|
+
pauseVisibility.Show();
|
|
212
|
+
|
|
213
|
+
if (fakeOverride)
|
|
214
|
+
return;
|
|
215
|
+
|
|
216
|
+
firstGroup.Show();
|
|
217
|
+
|
|
218
|
+
cancel.action.started += UnPause;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/// <summary>
|
|
222
|
+
///
|
|
223
|
+
/// </summary>
|
|
224
|
+
/// <param name="context"></param>
|
|
225
|
+
protected virtual void UnPause(CallbackContext context)
|
|
226
|
+
{
|
|
227
|
+
if (firstGroup.isActive && !ServiceLocator.GetService<MenuState>().Changing)
|
|
228
|
+
Resume();
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/// <summary>
|
|
232
|
+
///
|
|
233
|
+
/// </summary>
|
|
234
|
+
protected virtual void Resume()
|
|
235
|
+
{
|
|
236
|
+
UnityEngine.Debug.Log(nameof(PauseMenu) + ": Unpausing.");
|
|
237
|
+
|
|
238
|
+
cancel.action.started -= UnPause;
|
|
239
|
+
|
|
240
|
+
EventSystem.current.SetSelectedGameObject(null);
|
|
241
|
+
|
|
242
|
+
MenuGroupBase[] groups = GetComponentsInChildren<MenuGroupBase>();
|
|
243
|
+
|
|
244
|
+
foreach (MenuGroupBase group in groups)
|
|
245
|
+
group.RemoveBackInput();
|
|
246
|
+
|
|
247
|
+
HidePauseGroup();
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/// <summary>
|
|
251
|
+
///
|
|
252
|
+
/// </summary>
|
|
253
|
+
/// <remarks></remarks>
|
|
254
|
+
public virtual void HidePauseGroup() => StartCoroutine(HidePauseGroupRoutine());
|
|
255
|
+
|
|
256
|
+
/// <summary>
|
|
257
|
+
///
|
|
258
|
+
/// </summary>
|
|
259
|
+
protected virtual IEnumerator HidePauseGroupRoutine()
|
|
260
|
+
{
|
|
261
|
+
resuming = true;
|
|
262
|
+
|
|
263
|
+
firstGroup.Hide();
|
|
264
|
+
|
|
265
|
+
OnPauseMenuHide?.Invoke();
|
|
266
|
+
|
|
267
|
+
if (pauseIntroVisibility != null)
|
|
268
|
+
{
|
|
269
|
+
pauseIntroVisibility.Hide();
|
|
270
|
+
|
|
271
|
+
yield return pauseIntroVisibility.WaitForChangeToComplete();
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
yield return new WaitForSecondsRealtime(Time.unscaledDeltaTime * 2);
|
|
275
|
+
|
|
276
|
+
if (pauseIntroVisibility == null)
|
|
277
|
+
pauseVisibility.Hide();
|
|
278
|
+
|
|
279
|
+
Time.timeScale = 1;
|
|
280
|
+
|
|
281
|
+
onResumeFinished.Raise();
|
|
282
|
+
|
|
283
|
+
resuming = false;
|
|
284
|
+
|
|
285
|
+
inMenu.Value = false;
|
|
286
|
+
|
|
287
|
+
inPause.SetValue(false);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/// <summary>
|
|
291
|
+
///
|
|
292
|
+
/// </summary>
|
|
293
|
+
/// <remarks></remarks>
|
|
294
|
+
public virtual void ShowFakePause()
|
|
295
|
+
{
|
|
296
|
+
fakeOverride = true;
|
|
297
|
+
|
|
298
|
+
if (pauseIntroVisibility != null)
|
|
299
|
+
pauseIntroVisibility.Show();
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/// <summary>
|
|
303
|
+
///
|
|
304
|
+
/// </summary>
|
|
305
|
+
/// <remarks></remarks>
|
|
306
|
+
public virtual void HideFakePause()
|
|
307
|
+
{
|
|
308
|
+
fakeOverride = false;
|
|
309
|
+
|
|
310
|
+
if (pauseIntroVisibility != null)
|
|
311
|
+
pauseIntroVisibility.Hide();
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/// <summary>
|
|
315
|
+
///
|
|
316
|
+
/// </summary>
|
|
317
|
+
/// <remarks></remarks>
|
|
318
|
+
public virtual void ResetPauseMenu() => Resume();
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
/// <inheritdoc/>
|
|
322
|
+
public virtual void ToTitleScreen() => cancel.action.started -= UnPause;
|
|
323
|
+
}
|
|
324
324
|
}
|
package/PauseMenu.cs.meta
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: db7139782cddc334baa4f31508d978cb
|
|
3
|
-
MonoImporter:
|
|
4
|
-
externalObjects: {}
|
|
5
|
-
serializedVersion: 2
|
|
6
|
-
defaultReferences: []
|
|
7
|
-
executionOrder: 0
|
|
8
|
-
icon: {instanceID: 0}
|
|
9
|
-
userData:
|
|
10
|
-
assetBundleName:
|
|
11
|
-
assetBundleVariant:
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: db7139782cddc334baa4f31508d978cb
|
|
3
|
+
MonoImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
serializedVersion: 2
|
|
6
|
+
defaultReferences: []
|
|
7
|
+
executionOrder: 0
|
|
8
|
+
icon: {instanceID: 0}
|
|
9
|
+
userData:
|
|
10
|
+
assetBundleName:
|
|
11
|
+
assetBundleVariant:
|